Как использовать проверку dijit/Textarea (Dojo 1.9)?
У меня есть текстовое поле, которое является обязательным для заполнения. Я нашел сообщение, в котором говорится, что Dojo не имеет проверки для Textarea, но в Dojo 1.9 есть аргумент 'required'.
Я сделал следующее:
new Textarea({required:true, value:""}, query('[name=description]')[0])
но эффект не тот, который я ожидал. Техасская область всегда имеет красную рамку, даже если поле не было сфокусировано (в отличие, например, от ValidationTextBox). Но когда я звоню:
form.validate()
проверка пройдена, даже если texarea пуст.
Возможно ли заставить Textare вести себя так же, как в ValidationTextBox, или как сейчас, проверка для этого компонента еще не готова, и мне придется написать собственную версию (как в связанном посте) или ждать следующего Dojo?
3 ответа
Я сделал это, используя миксин SimpleTextArea и ValidationTextArea:
define(["dojo/_base/declare", "dojo/_base/lang", "dijit/form/SimpleTextarea", "dijit/form/ValidationTextBox"],
function(declare, lang, SimpleTextarea, ValidationTextBox) {
return declare('dijit.form.ValidationTextArea', [SimpleTextarea, ValidationTextBox], {
constructor: function(params){
this.constraints = {};
this.baseClass += ' dijitValidationTextArea';
},
templateString: "<textarea ${!nameAttrSetting} data-dojo-attach-point='focusNode,containerNode,textbox' autocomplete='off'></textarea>"
})
})
Смотрите также мой ответ в Dojo проверки текстовой области
Сила додзё заключается в том, чтобы с легкостью расширять его. Если вам действительно нужно required
функциональность, а затем реализовать его. Если вы спроектируете это хорошо, не должно возникнуть никаких проблем, если оно действительно будет реализовано в новой версии Dojo.
Если вы действительно хотите узнать, существует ли такая функция или находится в стадии разработки, я предлагаю посмотреть на http://bugs.dojotoolkit.org/. Кроме того, вы всегда можете внести свой вклад в код, для этого и предназначен открытый исходный код.
Я хотел бы добавить к ответу Donaudampfschifffreizeitfahrt
вместо "this.baseClass += ' dijitValidationTextArea';"
я бы сделал
this.baseClass = this.baseClass.replace('dijitTextBox', 'dijitValidationTextArea');
так как
• нам не нужен класс TextBox, если у нас есть текстовый миксин
•! параметр "строки" смешивается, но не запускается / не разрабатывается, если присутствует класс TextBox...