0

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

我做了以下事情:

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

但效果出乎我的意料。texarea 总是有红色边框,即使该字段没有被聚焦(例如,与 ValidationTextBox 相反)。但是当我打电话时:

form.validate()

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

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

4

3 回答 3

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 中的回答

于 2013-10-21T11:41:14.243 回答
1

Dojo 的强大之处在于轻松扩展它。如果您确实需要该required功能,请实现它。如果你设计得好,如果它真的在新版本的 Dojo 中实现应该没有问题。

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

于 2013-10-15T08:05:56.057 回答
0

我想补充一下Donaudampfschifffreizeitfahrt的答案

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

我会做

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

因为

• 如果我们有一个 textarea mixin,我们就不需要 TextBox 类

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

于 2014-08-22T17:40:19.653 回答