Почему FilteringSelect в декларативной форме dijit вызывает неверную отправку? - PullRequest
1 голос
/ 02 августа 2011

Помогите мне понять это.

Разве 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.");
    }
});
});

1 Ответ

0 голосов
/ 24 августа 2013

Как упоминалось Фроде, нам нужно установить для false значение false. Но многие поля могут быть использованы. Не очень хорошая идея устанавливать 'required' для каждого в разделе dojo.ready.

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

Лучше всего упомянуть его как атрибут в самом html. Позвольте мне привести пример, почему это лучше.

Если поле включено во вкладку, и если вкладка обновляется при определенных действиях, html будет снова обработан. Таким образом, в этом случае требуемое снова будет верно для этого поля. Поэтому, чтобы избежать этих сценариев, укажите это в html-объявлении самого виджета.

...