1

帮助我理解这一点。

默认情况下dijit.form.FilteringSelect(扩展自)不ValidationTextBox应该具有属性吗?required = false

为什么简单地将 FilteringSelect 包含在如下所示的声明形式中会自动导致dijit.form.Form.isValid() == false

即使手动将 filterselect 的requiredprop 设置为 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.");
    }
});
});
4

1 回答 1

0

就像 Frode 提到的,我们需要将 required 设置为 false。但是,可能会使用很多字段。在 dojo.ready 部分中为每个设置“必需”不是一个好主意。

<select name="friend" id="friend-input" 
             dojotype="dijit.form.FilteringSelect" required="false"></select>

更好的方法是在 html 本身中将其作为属性提及。让我举个例子,为什么它更好。

如果该字段包含在选项卡中,并且如果选项卡在某些操作上被刷新,则 html 将再次被破坏。因此,在这种情况下,该字段的 required 将再次为真。因此,因此,在小部件本身的 html 声明中提供它以避免这些情况。

于 2013-08-24T10:11:52.650 回答