2012-09-28 35 views
1

我想添加一個自定義驗證方法到jQuery驗證插件。使用給定的countrycode,zip和city,我通過ajax調用一個php腳本來檢查這個組合是否存在,如果是的話,它會返回一個「有效的」。jquery驗證插件自定義方法ajax多參數

所以我添加的方法是這樣的:

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文件中已有的值,驗證按預期工作...

+0

你想要什麼?我不明白你的問題 –

+0

我想用delivery_city:{zipcitycombination:[$('select [name =「amsdelivery_country」]').val(),$('input#delivery_zip').val()]}輸入的國家和郵編值,而不是空值 – sinini

回答

1

假設您不僅僅提取validator方法中的值的原因是您希望使方法成爲通用的,以便您可以與其中姓名/ IDS不同,不同的形式使用它,我建議你更改參數的驗證方法是選擇,而不是價值,如:

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

並配置validate這樣的:

$("#commentForm").validate({ 

    rules: { 
     delivery_city: { 
      zipcitycombination:['select[name="amsdelivery_country"]','input#delivery_zip'] 
     } 
    } 
+0

是的,這就是它!謝謝 – sinini

相關問題