复选框字段

复选框字段将字符串作为其值,并将字符串作为其文本。其值为 'TRUE''FALSE',文本为 'true''false'

复选框字段

收起块上的复选框字段

恣意创作

JSON

{
  "type": "example_checkbox",
  "message0": "checkbox: %1",
  "args0": [
    {
      "type": "field_checkbox",
      "name": "FIELDNAME",
      "checked": true
    }
  ]
}

JavaScript

Blockly.Blocks['example_checkbox'] = {
  init: function() {
    this.appendDummyInput()
        .appendField('checkbox:')
        .appendField(new Blockly.FieldCheckbox(true), 'FIELDNAME');
  }
};

复选框构造函数接受一个可选值和一个可选的validator。可选值应为 'TRUE''FALSE' 或布尔值,否则默认为 false

序列化

JSON

复选框字段的 JSON 如下所示:

{
  "fields": {
    "FIELDNAME": true
  }
}

其中,FIELDNAME 是引用复选框字段的字符串,值是要应用于该字段的值。该值必须是布尔值。

XML

复选框字段的 XML 如下所示:

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

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

其中,name 属性包含引用复选框字段的字符串,内部文本是要应用于该字段的值。内部文本值遵循与构造函数值相同的规则。

请注意,在反序列化和重新序列化后,所有内部文本值都将采用大写形式('TRUE''FALSE')。这有时在差异工作区时非常重要。

自定义

对勾标记字符

Blockly.FieldCheckbox.CHECK_CHAR 属性可用于更改对勾标记的外观。该值应为包含 Unicode 字符的字符串。

包含爱心而非勾选的复选框字段

CHECK_CHAR 属性默认为“\u2713”或 ✓。

这是一个全局属性,因此它会在设置后修改所有复选框字段。

创建复选框验证程序

复选框字段的值是 'TRUE''FALSE',因此验证工具应接受这些值(即字符串)并返回 'TRUE''FALSE'nullundefined

以下示例中的验证器会根据复选框是否选中隐藏或显示文本输入字段:

  validate: function(newValue) {
    var sourceBlock = this.getSourceBlock();
    sourceBlock.showTextField_ = newValue == 'TRUE';
    sourceBlock.updateTextField();

    return newValue;
  },

  updateTextField: function() {
    var input = this.getInput('DUMMY');
    if (this.showTextField_ && !this.getField('TEXT')) {
      input.appendField(new Blockly.FieldTextInput(), 'TEXT');
    } else if (!this.showTextField_ && this.getField('TEXT')) {
      input.removeField('TEXT');
    }
  }

带有验证程序的复选框字段