复选框字段

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

复选框字段

![一个标签为“checkbox:”的块和一个带对勾标记的复选框字段。

收起的代码块上的复选框字段

收起后的同一代码块。该行带有标签“variable: true”,并且右边缘锯齿状,表示该行已收起。

创建

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');
  }
};

复选框构造函数接受一个可选值和一个可选的验证器。可选值应为 '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');
    }
  }

带有验证器的复选框字段

动画 GIF,显示复选框被选中。选中复选框后,系统会显示一个文本字段。