یک فیلد ورودی متن یک رشته را به عنوان مقدار و یک رشته را به عنوان متن خود ذخیره می کند. مقدار آن همیشه یک رشته معتبر است، در حالی که متن آن می تواند هر رشته ای باشد که در ویرایشگر آن وارد شده است.
فیلد ورودی متن
فیلد ورودی متن با ویرایشگر باز است
فیلد ورودی متن در بلوک جمع شده
خلقت
JSON
{
"type": "example_textinput",
"message0": "text input: %1",
"args0": [
{
"type": "field_input",
"name": "FIELDNAME",
"text": "default text",
"spellcheck": false
}
]
}
جاوا اسکریپت
Blockly.Blocks['example_textinput'] = {
init: function() {
this.appendDummyInput()
.appendField("text input:")
.appendField(new Blockly.FieldTextInput('default text'),
'FIELDNAME');
}
};
سازنده ورودی متن یک مقدار اختیاری و یک اعتبارسنجی اختیاری می گیرد. مقدار باید به یک رشته ارسال شود. اگر null
یا undefined
باشد، از یک رشته خالی استفاده می شود.
تعریف JSON همچنین به شما این امکان را می دهد که گزینه بررسی املا را تنظیم کنید.
سریال سازی و XML
JSON
JSON برای فیلد ورودی متن به این صورت است:
{
"fields": {
"FIELDNAME": "text"
}
}
جایی که FIELDNAME
رشتهای است که به فیلد ورودی متن ارجاع میدهد و مقدار آن مقداری است که باید به فیلد اعمال شود. مقدار از همان قوانین ارزش سازنده پیروی می کند.
XML
XML برای فیلد ورودی متن به این صورت است:
<field name="FIELDNAME">text</field>
جایی که ویژگی name
فیلد حاوی رشته ای است که به فیلد ورودی متن ارجاع می دهد و متن داخلی مقداری است که باید به فیلد اعمال شود. مقدار متن داخلی از قوانینی مشابه با مقدار سازنده پیروی می کند.
سفارشی سازی
بررسی املا
تابع setSpellcheck را می توان برای تعیین اینکه آیا فیلد متن ورودی خود را بررسی می کند یا خیر استفاده می شود.
فیلدهای ورودی متن با و بدون املا
املا به طور پیش فرض روشن است.
این برای فیلدهای فردی اعمال می شود. اگر میخواهید همه فیلدها را تغییر دهید، ویژگی Blockly.FieldTextInput.prototype.spellcheck_
را تغییر دهید.
ایجاد اعتبارسنجی ورودی متن
مقدار فیلد ورودی متن یک رشته است، بنابراین هر اعتبارسنجی باید یک رشته را بپذیرد و یک رشته، null
یا undefined
را برگرداند.
در اینجا یک نمونه از اعتبارسنجی است که تمام کاراکترهای 'a' را از رشته حذف می کند:
function(newValue) {
return newValue.replace(/a/g, '');
}