jquery验证插件自定义方法ajax多个参数

时间:2012-09-28 10:39:06

标签: jquery jquery-validate

我正在尝试向jquery-validation插件添加自定义验证方法。使用给定的国家代码,zip和城市,我通过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文件中已有的值,验证按预期工作......

1 个答案:

答案 0 :(得分: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']
        }
    }