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 回答