Поля для ввода многострочного текста

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

Многострочное поле ввода текста

Многострочное поле ввода текста с открытым редактором

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

Создание

JSON

{
  "type": "example_multilinetextinput",
  "message0": "multiline text input: %1",
  "args0": [
    {
      "type": "field_multilinetext",
      "name": "FIELDNAME",
      "text": "default text\n with newline character",
      "spellcheck": false
    }
  ]
}

JavaScript

Blockly.Blocks['example_multilinetextinput'] = {
  init: function() {
    this.appendDummyInput()
        .appendField("multiline text input:")
        .appendField(new Blockly.FieldMultilineInput('default text\n with newline character'),
            'FIELDNAME');
  }
};

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

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

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

JSON

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

{
  "fields": {
    "FIELDNAME": "line1\nline2"
  }
}

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

XML

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

<field name="FIELDNAME">line1&amp;#10;line2</field>

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

Кастомизация

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

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

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

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

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

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

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

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

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