据我判断,CSS-Rule“dijitRequired”用于标记所需的输入字段。然而,当我将“required”-Attribute应用于dijit时,未设置此样式,例如日期dijit:
Dijit的构建如下:
<input dojoType="dijit.form.DateTextBox" class="l" id="datumsTestID" name="datumsTest" tabindex="5" value="2009-01-01" />
使用以下Javscript代码
设置Attributedijit.byId('datumsTestID').attr('required', true)
我做错了什么,或者“dijitRequired”的样式不打算像我假设的那样使用?
出于我的目的,我修补了ValidationTextBox.js来设置/取消设置类,但是有更清晰(意思是:更正确)的方法来设置类,还是可以使用其他属性设置必填字段?
ValidationTextBox.js,Dojo 1.3,Line 116
_setRequiredAttr:function(_12){
this.required=_12;
if (_12) dojo.addClass(this.domNode, "dijitRequired");
else dojo.removeClass(this.domNode, "dijitRequired");
dijit.setWaiState(this.focusNode,"required",_12);
this._refreshState();
}
答案 0 :(得分:1)
嗯,我在ValidationTextBox.js或其他任何地方都没有看到该代码。我在1.3中的_setRequiredAttr()是:
_setRequiredAttr: function(/*Boolean*/ value){
this.required = value;
dijit.setWaiState(this.focusNode,"required", value);
this._refreshState();
}
实际上我根本没有看到对dijitRequired的任何引用,也许这是你添加到本地副本的东西?
答案 1 :(得分:0)
设置 dijitRequired 是不够的。 dijit.form.DateTextBox 有自己的内部状态。即使设置了必需属性,此小组件仅在模糊时显示错误。您可以使用这样的子类禁用此机制:
dojo.provide("my.DateTextBox");
dojo.require("dijit.form.DateTextBox");
dojo.declare("my.DateTextBox", dijit.form.DateTextBox, {
_setRequiredAttr: function(required){
this._hasBeenBlurred = true;
this.inherited(arguments);
}
});