如何使用dijit / Textarea验证(Dojo 1.9)?

时间:2013-10-11 11:39:27

标签: validation textarea dojo dojo-1.9

我有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 ?

3 个答案:

答案 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>"
  })
})

另见Dojo validation of a 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类存在,则参数被混合但不会被触发/样式...