שדה של תיבת סימון מאחסן מחרוזת כערך ומחרוזת כטקסט. הערך שלו הוא 'TRUE'
או 'FALSE'
, והטקסט שלו הוא 'true'
או 'false'
.
שדה תיבת סימון
![בלוק עם התווית 'checkbox:' ושדה של תיבת סימון עם סימן וי.
שדה תיבת סימון בבלוק מכווץ
יצירה
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');
}
};
ה-constructor של תיבת הסימון מקבל ערך אופציונלי ומבצע אימות אופציונלי. הערך האופציונלי צריך להיות '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'
, 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');
}
}