帮助我理解这一点。
默认情况下dijit.form.FilteringSelect
(从ValidationTextBox
扩展而来)应该拥有属性required = false
?
为什么简单地以下面的声明形式包含FilteringSelect会自动生成dijit.form.Form.isValid() == false
?
即使手动将filteringselect的required
道具设置为false,也会导致无效的表单提交。我觉得我在这里缺少了一些东西。
我正在使用dojo工具包版本1.6.1。
<!-- form.html -->
<form id="form" dojoType="dijit.form.Form">
<table>
<tr>
<td id="friend">
<select name="friend" id="friend-input" dojotype="dijit.form.FilteringSelect"></select>
</td>
</tr>
<tr>
<td>
<input type="submit" id="submit-input" value="Submit" label="Submit" dojotype="dijit.form.Button">
</td>
</tr>
</table>
</form>
/* form.js */
dojo.require("dijit.form.Button");
dojo.require("dijit.form.FilteringSelect");
dojo.require("dijit.form.Form");
dojo.ready(function() {
var form = dijit.byId("form");
var friendInput = dijit.byId("friend-input");
friendInput.required = false;
dojo.connect(form, "onSubmit", function(event) {
event.preventDefault();
if (form.isValid()) {
alert("Ready to submit data: " + dojo.toJson(form.get("value")));
} else {
alert("Form is not valid.");
}
});
});
答案 0 :(得分:0)
像Frode提到的那样,我们需要将required设置为false。 但是,可能会使用很多字段。在dojo.ready部分为每个设置'required'不是一个好主意。
<select name="friend" id="friend-input"
dojotype="dijit.form.FilteringSelect" required="false"></select>
更好的方法是在html本身中将其作为属性提及。让我举一个例子,为什么它会更好。
如果该字段包含在选项卡中,并且如果在某些操作上刷新选项卡,则html将再次被激活。因此,在该场景中,对于该字段,所需的将再次成立。因此,在小部件本身的html声明中提供它以避免这些情况。