1
WebFormsでjQuery Validatorプラグインを使用しようとしています。ここに私のjQueryのコードがあります:jQuery Validator#remote with ASP.NET WebForm
$("input[id$=FromZip]").rules('add', {
required: true,
postalCode: true,
remote: {
url: "shipping companies.aspx/ValidatePostalCode",
type: "POST",
contentType: "application/json; charset=utf-8",
dataType: 'json',
data: "{'postalCodeToValidate': '" + $("input[id$=FromZip]").val() + "'}",
dataFilter: function(data) { return (JSON.parse(data)).d; }
},
messages: {
required: '"From" zip code is required.',
postalCode: 'Invalid "From" zip code',
remote: 'The "From" zip code was not found in the database.'
}
});
これに伴う問題はval()
は常に空返すので、値は常にfalseとしてフラグ付けされていることです。私はそうのように、関数呼び出しでそれをラップしようとした:今除き
remote: function() {
var r = {
url: "shipping companies.aspx/ValidatePostalCode",
type: "POST",
contentType: "application/json; charset=utf-8",
dataType: 'json',
async: false,
data: "{'postalCodeToValidate': '" + $("input[id$=FromZip]").val() + "'}",
dataFilter: function(data) { return (JSON.parse(data)).d; }
}
}
WebMethod属性がすべてで呼び出されていないと何のAjaxリクエストがなされていないされている、前にしばらく呼び出しがされていた(var r = {}
ものなし)テキストボックスの値の代わりに空のデータを渡します。私は今一日のうちにこれを理解しようとしています。
提案がありますか?
のようなあなたのリモート機能を書くことができます{"d": "true"}です。カスタムメソッドで "True"の値をハードコーディングしても、このフィールドは無効とフラグされます。 –
変数を作成し、その変数をsuccessメソッドハンドラに代入し、Ajax呼び出しの外の値をチェックすることで修正できました。不思議で、それを処理する方法はほぼ確実ですが、解決されています。 –
同じ問題が私に起こった、私はリモートの代わりにカスタムメソッドを使用するように変更されました。このカスタムメソッドのキャッチの1つは、ajax呼び出しをasyncに設定する必要があるかもしれないということです。そうでなければ、バリデータは常にfalseを表示します。これは私がアイデアを得たところですhttp://stackoverflow.com/questions/7966209/jquery-custom-validators-do-not-validate-on-keystroke – Zayar