Поля ввода текста

Поле ввода текста хранит строку в качестве своего значения и строку в качестве своего текста. Его значение всегда является допустимой строкой, в то время как его текстом может быть любая строка, введенная в его редактор.

Поле ввода текста

Блок с меткой «ввод текста:» и полем ввода текста, установленным на «текст по умолчанию».

Поле ввода текста с открытым редактором

Тот же блок с редактируемым полем.

Поле ввода текста в свернутом блоке

Тот же блок после сворачивания. Он имеет метку «ввод текста: текст по умолчанию» и зубчатый правый край, показывающий, что он свернут.

Создание

JSON

{
  "type": "example_textinput",
  "message0": "text input: %1",
  "args0": [
    {
      "type": "field_input",
      "name": "FIELDNAME",
      "text": "default text",
      "spellcheck": false
    }
  ]
}

JavaScript

Blockly.Blocks['example_textinput'] = {
  init: function() {
    this.appendDummyInput()
        .appendField("text input:")
        .appendField(new Blockly.FieldTextInput('default text'),
            'FIELDNAME');
  }
};

Конструктор ввода текста принимает необязательное значение и необязательный валидатор . Значение должно быть приведено к строке. Если оно равно null или undefined , будет использована пустая строка.

Определение JSON также позволяет установить параметр проверки орфографии .

Сериализация и XML

JSON

JSON для поля ввода текста выглядит так:

{
  "fields": {
    "FIELDNAME": "text"
  }
}

Где FIELDNAME — это строка, ссылающаяся на поле ввода текста, а значение — это значение, которое нужно применить к полю. Значение подчиняется тем же правилам, что и значение конструктора.

XML

XML для поля ввода текста выглядит следующим образом:

<field name="FIELDNAME">text</field>

Где атрибут name поля содержит строку, ссылающуюся на поле ввода текста, а внутренний текст — это значение, применяемое к полю. Значение внутреннего текста следует тем же правилам, что и значение конструктора.

Настройка

Проверка орфографии

Функцию setSpellcheck можно использовать для настройки того, будет ли поле проверять орфографию вводимого текста или нет.

Поля ввода текста с проверкой орфографии и без нее

Анимированный GIF-файл, показывающий два блока с полями ввода текста. В первом блоке включена проверка орфографии, а слова с ошибками подчеркнуты волнистой красной линией. Во втором блоке отключена проверка орфографии, а слова с ошибками не подчеркнуты.

Проверка орфографии включена по умолчанию.

Это относится к отдельным полям. Если вы хотите изменить все поля, измените свойство Blockly.FieldTextInput.prototype.spellcheck_ .

Создание валидатора текстового ввода

Значением текстового поля ввода является строка, поэтому любые валидаторы должны принимать строку и возвращать строку, null или undefined .

Вот пример валидатора, который удаляет все символы «а» из строки:

function(newValue) {
  return newValue.replace(/a/g, '');
}

Анимированный GIF, демонстрирующий проверку поля ввода текста. Когда пользователь вводит «bbbaaa» и щелкает в другом месте, поле меняется на «bbb».