1

jquery-validation プラグインにカスタム検証メソッドを追加しようとしています。国コード、郵便番号、市区町村を指定して、ajax 経由で php スクリプトを呼び出して、この組み合わせが存在するかどうかを確認し、存在する場合は「有効」を返します。

したがって、追加したメソッドは次のようになります。

jQuery.validator.addMethod("zipcitycombination", function(city, element, params) {

  //function check zip and city
  var country = params[0];
  var zip = params[1];

  $.ajax({
    type: 'GET',
    url: '/?eID=tx_zipcity',
    async: false,
    data: 'country=' + country + '&zip=' + zip+ '&city=' + city,
    success: function(data){
        response = ( data == 'valid' ) ? true : false;
    }
  })
  return response;

}, "Please check your combination");

そして今、私はこのような検証を使用しようとしています:

    $("#commentForm").validate({

        rules: {
            delivery_city: {
                zipcitycombination:[$('select[name="amsdelivery_country"]').val(),$('input#delivery_zip').val()]
            }
        }

したがって、zipcitycombination を除いて、すべて正常に動作します。

[$('select[name="delivery_country"]').val(),$('input#delivery_zip').val()],

入力フィールドの値ではなく、空の値を使用するためです。html ファイルに既に値を設定すると、検証は期待どおりに機能します...

4

1 に答える 1

1

バリデーターメソッドで値を抽出するだけでなく、名前/IDが異なるさまざまなフォームで使用できるようにメソッドをジェネリックにしたいという理由があると仮定すると、パラメーターを検証メソッドに変更することをお勧めします次のように、値の代わりにセレクターにします。

var country = $(params[0]).val();
var zip = $(params[1]).val();

そして、次のように構成validateします。

$("#commentForm").validate({

    rules: {
        delivery_city: {
            zipcitycombination:['select[name="amsdelivery_country"]','input#delivery_zip']
        }
    }
于 2012-09-28T10:46:31.743 に答える