フォーム内の複数の要素を監視し、すべての要素が正常に検証された場合にのみ送信ボタンを有効にします。これが私が試みたものです:-
$('#beta_signup_form').validate({
rules: {
name: {
required: true,
minlength: 4
},
email: {
required: true,
email: true
}
},
focusCleanup: true,
onkeyup: false,
errorElement: "span",
submitHandler: function(form) {
if ($('#beta_signup_form').valid()) {
console.log("now we enable the submit button!");
}
}
});
更新
送信ボタンを有効にして、ユーザーがそれをクリックしてajax呼び出しを行ってフォームを送信できるようにする前に、submitHandler
がトリガーされ、すべてのフィールドが有効であることを確認するif条件が期待されていました。if ($('#beta_signup_form').valid())
しかし、どういうわけか、すべてのフィールドが有効な場合、何もトリガーされません。
私は自分が間違っていることを理解しました。それは、submitHandler
属性が「検証されたすべてのフィールド」イベントの検出とは何の関係もないということです。submitHandler
フォームボタンをクリックした場合にのみ属性が起動されますが、これは必要なものではありません。
だから私の質問は-私がバインドする必要があるイベントはどれですか?フォームのすべてのフィールドが検証されるときにトリガーを設定するために使用できる属性はありますか?
フォームのhtmlコードは次のとおりです。-
<form id="beta_signup_form" postUrl="{% url 'signups_beta_users' %}" method="post" csrf_token="{{ csrf_token }}">{% csrf_token %}
<div>
<input type="text" id="name" name="name" placeholder="Name" />
</div>
<div>
<input type="email" id="email" name="email" placeholder="Email address" />
</div>
<button class="btn btn-success" type="submit" id="request-trial" href="#request-for-free-trial">Notify Me</button>
<div class="loading"></div>
</form>