繁体   English   中英

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

[英]How to use dijit/Textarea validation (Dojo 1.9)?

我有必填字段。 我发现有帖子暗示Dojo没有针对Textarea的验证 ,但是在Dojo 1.9中,有一个参数“ required”。

我已经完成以下工作:

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

但是效果不是我所期望的。 即使该字段未聚焦,该texarea始终具有红色边框(例如,与ValidationTextBox相反)。 但是当我打电话时:

form.validate()

即使texarea为空,也会通过验证。

是否有可能使Textare的行为与ValidationTextBox中的行为相同,或者就目前而言,该组件的验证尚未准备好,我必须编写自定义版本(如链接文章中所述)或等待下一个Dojo?

我已经使用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验证中的答案

Dojo的功能在于轻松扩展它。 如果您确实需要required功能,请实施它。 如果设计得当,那么在新版本的Dojo中实际实现它应该没有问题。

如果您真的想知道这种功能是否存在或正在开发中,建议您访问http://bugs.dojotoolkit.org 此外,您始终可以为代码做出贡献,这就是开源的意义。

我想补充一下Donaudampfschifffreizeitfahrt的答案

而不是“ this.baseClass + ='dijitValidationTextArea';”

我会做

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

因为

•如果我们有textarea mixin,则不需要TextBox类

•! 如果存在TextBox类,则混合“行”参数,但不触发/设置样式...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM