שדה תיבת סימון מאחסן מחרוזת כערך שלו ומחרוזת כטקסט שלו. הערך שלו הוא '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');
}
};
הבונה של תיבת הסימון מקבל ערך אופציונלי ומאמת אופציונלי. הערך האופציונלי צריך להיות '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
כדי לשנות את המראה של סימן ה-V. הערך צריך להיות מחרוזת שמכילה תו 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');
}
}