2013-10-11 2 views
0

У меня есть textarea, которое является обязательным для заполнения. Я нашел post suggesting that Dojo doesn't have validation for Textarea, но в Dojo 1.9 есть аргумент «требуется».Как использовать проверку dijit/Textarea (Dojo 1.9)?

Я сделал следующее:

new Textarea({required:true, value:""}, query('[name=description]')[0]) 

но эффект не то, что я ожидал. Texarea всегда имеет красную границу, даже если поле не фокусировалось (как, напротив, ValidationTextBox). Но когда я звоню:

form.validate() 

Валидация передается, даже если тексария пуста.

Возможно ли, что Textare будет вести себя так же, как и в ValidationTextBox, или пока что проверка этого компонента еще не готова, и мне придется писать пользовательскую версию (как в связанной записи) или ждать следующего Dojo?

+0

Я не думаю, что проверка текстовой области возможна с помощью функции проверки по умолчанию. В конце концов значение textare находится во внутреннем HTML, а значения других входов - helf в атрибуте value. – undefined

+0

Некоторые примеры [здесь] (http://stackoverflow.com/questions/8072173/dojo-validation-of-a-textarea) – undefined

+0

@xyu да, это настраиваемый код, но я спросил, как выглядит статус требуется в Textarea в Dojo 1.9? Разве это все еще «в разработке», или это поведение является опциональным вариантом? Это не согласуется с другими элементами управления, поэтому я сомневаюсь, что это действительно окончательная версия кода. –

ответ

5

Я сделал это с помощью подмешать из 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 validation of a textarea

+0

как включить это объявление в .js, у которого уже есть функция dojo define, и использовать его в том же файле? – bransharp

1

Сила Доджо заключается в ее простоте. Если вам действительно нужна функциональность required, тогда выполните ее. Если вы хорошо его разработали, не должно возникнуть никаких проблем, если оно действительно будет реализовано в новой версии Dojo.

Если вы действительно хотите знать, существует ли такая функция или находится в разработке, я предлагаю посмотреть на http://bugs.dojotoolkit.org. Кроме того, вы всегда можете внести свой вклад в код, для чего предназначен открытый источник.

0

Я хотел бы добавить к ответу Donaudampfschifffreizeitfahrt

вместо "this.baseClass + = 'dijitValidationTextArea';"

Я бы

this.baseClass = this.baseClass.replace('dijitTextBox', 'dijitValidationTextArea'); 

потому

• мы не нуждаемся класс TextBox, если мы получили подмешать

текстовой

•! параметр «rows» смешивается, но не запускается/не стирается, если присутствует класс TextBox ...