یک فیلد چک باکس یک رشته را به عنوان مقدار خود و یک رشته را به عنوان متن خود ذخیره می کند. مقدار آن یا 'TRUE'
یا 'FALSE'
است و متن آن 'true'
یا 'false'
است.
فیلد چک باکس
فیلد چک باکس در بلوک جمع شده
خلقت
JSON
{
"type": "example_checkbox",
"message0": "checkbox: %1",
"args0": [
{
"type": "field_checkbox",
"name": "FIELDNAME",
"checked": true
}
]
}
جاوا اسکریپت
Blockly.Blocks['example_checkbox'] = {
init: function() {
this.appendDummyInput()
.appendField('checkbox:')
.appendField(new Blockly.FieldCheckbox(true), 'FIELDNAME');
}
};
سازنده چک باکس یک مقدار اختیاری و یک اعتبارسنجی اختیاری می گیرد. مقدار اختیاری باید 'TRUE'
، 'FALSE'
یا یک Boolean باشد، در غیر این صورت به طور پیشفرض روی 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
را می توان برای تغییر ظاهر تیک مورد استفاده قرار داد. مقدار باید یک رشته حاوی یک کاراکتر یونیکد باشد.
ویژگی CHECK_CHAR
به طور پیشفرض روی «\u2713» یا ✓ است.
این یک ویژگی جهانی است، بنابراین وقتی تنظیم شود، تمام فیلدهای چک باکس را تغییر می دهد.
ایجاد تأیید کننده چک باکس
مقدار فیلد چک باکس یا 'TRUE'
یا 'FALSE'
است، بنابراین یک اعتبارسنجی باید آن مقادیر (به عنوان مثال یک رشته) را بپذیرد و 'TRUE'
، 'FALSE'
، null
یا undefined
را برگرداند.
در اینجا نمونهای از اعتبارسنجی است که یک فیلد ورودی متن را بر اساس علامت زدن چک باکس پنهان یا نشان میدهد:
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');
}
}