2011-01-21 8 views
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 = {}ものなし)テキストボックスの値の代わりに空のデータを渡します。私は今一日のうちにこれを理解しようとしています。

提案がありますか?

+1

のようなあなたのリモート機能を書くことができます{"d": "true"}です。カスタムメソッドで "True"の値をハードコーディングしても、このフィールドは無効とフラグされます。 –

+0

変数を作成し、その変数をsuccessメソッドハンドラに代入し、Ajax呼び出しの外の値をチェックすることで修正できました。不思議で、それを処理する方法はほぼ確実ですが、解決されています。 –

+0

同じ問題が私に起こった、私はリモートの代わりにカスタムメソッドを使用するように変更されました。このカスタムメソッドのキャッチの1つは、ajax呼び出しをasyncに設定する必要があるかもしれないということです。そうでなければ、バリデータは常にfalseを表示します。これは私がアイデアを得たところですhttp://stackoverflow.com/questions/7966209/jquery-custom-validators-do-not-validate-on-keystroke – Zayar

答えて

0

あなたは、だから私は、カスタムメソッドを作成する代わりに、リモートを使用することにより、部分的にそれを解決しているように見えるが、今では、応答は私が手にしても無効としてフィールドにフラグを立てるということ

remote: function() { 
     var value = $('#FromZip').val(); 
     var r = { 
      contentType: "application/json; charset=utf-8", 
      data: JSON.stringify({ 'postalCodeToValidate': value }), 
      type: 'POST', 
      dataType: 'json', 
      url: 'shipping companies.aspx/ValidatePostalCode', 
      dataFilter: function(data) { return $.parseJSON(data).d; } 
     }; 
     return r; 
    }