私の使命は、フィールドを必須フィールドにすることですが、ajax/リモート呼び出しが false を返した場合、その必須フィールドの順序をキャンセルします。私はこれを解決しようと何日も遊んでいます。
私はさまざまな方法で依存を使用しようとしましたが、最初はこの例を使用しましたが、機能させることができませんでした - https://github.com/jzaefferer/jquery-validation/issues/431
(その例は、何らかの理由でリモートコードを調べようとさえしません)
依存関係がどのように機能するかを理解するためだけに、コードを取り除こうとしています。
HTML:
<form method="post" action="" id="register_employee_form" >
<table>
<tr>
<tr>
<td class="column_1"><label>FORENAME</label></td>
<td><input name="forename" id="forename" value="" /></td>
</tr>
</table>
<input type="submit" value="Register" onclick="register(); return false;" />
</form>
Jクエリ:
function register()
{
var cancel_validation = 0; // Dont cancel validation
var form = $("#register_employee_form");
var validator = form.validate({
errorElement: "p",
rules:
{
forename:
{
required: true,
remote: {
url: "ajax_code.php",
complete: function(response) {
if (response.responseText == "false")
{
cancel_validation = 1;
}
} // complete
}, // remote
depends: function() {
if(cancel_validation == 1)
{
return false;
}
}
} // forename
},
messages: {
forename: {
required : "forename required",
remote : "REMOTE"
}
},
submitHandler: function(form) {
form.submit();
}
});
validator.form();
}
ajax_code.php: 今のところ、テスト用の false または true の単純なエコー
<?php
echo "true"; // return false if OK
?>
したがって、リモート応答が false を返す場合、検証は行われませんが、true を返す場合は検証が行われます。
これが意味をなすことを願っています。私が達成しようとしていることと、これまでに試したことを理解するのは非常に困難です。
どんなアイデアや助けもありがたく受け取った。