我有textarea,这是必填字段。我找到post suggesting that Dojo doesn't have validation for Textarea,但在Dojo 1.9中,有一个“必需”的参数。
我做了以下事情:
new Textarea({required:true, value:""}, query('[name=description]')[0])
但效果不是我所期望的。 texarea总是有红色边框,即使字段没有聚焦(例如,与ValidationTextBox相反)。但是当我打电话时:
form.validate()
即使texarea为空,也会通过验证。
是否有可能让Textare的行为与ValidationTextBox相同,或者就目前而言,该组件的验证尚未准备就绪,我必须编写自定义版本(如在链接帖子中)或等待下一个Dojo ?
答案 0 :(得分:5)
我使用SimpleTextArea和ValidationTextArea的mixin完成了它:
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>"
})
})
中的答案
答案 1 :(得分:1)
Dojo的力量在于轻松扩展它。如果您确实需要required
功能,请实施它。如果你设计得很好,如果它真的在Dojo的新版本中实现,应该没有问题。
如果您真的想知道这样的功能是否存在或正在开发中,我建议您查看http://bugs.dojotoolkit.org。此外,您始终可以为代码做出贡献,这就是开源的含义。
答案 2 :(得分:0)
我想补充 Donaudampfschifffreizeitfahrt 的答案
而不是&#34; this.baseClass + =&#39; dijitValidationTextArea&#39 ;;&#34;
我愿意
this.baseClass = this.baseClass.replace('dijitTextBox', 'dijitValidationTextArea');
因为
•如果我们有textarea mixin
,我们不需要TextBox类•! &#34;行&#34;如果TextBox类存在,则参数被混合但不会被触发/样式...