2011-09-17 88 views
0

讓我承認,我不是很擅長jQuery甚至bacic JS,但我已經通過一個非常酷的形式破解我的方式,但我需要有人來幫助我我遇到的最後一個問題。jquery驗證插件並忽略(JavaScript和jquery新手)

$(document).ready(function(){ 

var ignoreClasses=""; 

//this hides or shows the specific sections base ond the relationship select 
$("#relationship").change(function() { 
    switch ($(this).val()){ 

     case 'prospective-customer': 
      $(".interest_all").hide(); 
      $("#interest_1").show(); 
      ignoreClasses = '.s2,.s4,.s5'; 
     break; 
     case 'current-cutomer': 
      $(".interest_all").hide(); 
      $("#interest_2").show(); 
      ignoreClasses = '.s1,.s4,.s5'; 
     break; 
     case 'prospective-partner': 
      $(".interest_all").hide();    
      $("#interest_3").show(); 
     break; 
     case 'applicant': 
      $(".interest_all").hide();   
      $("#interest_4").show(); 
      ignoreClasses = '.s1,.s2,.s5'; 
     break; 
     case 'vendor':   
      $(".interest_all").hide();   
      $("#interest_5").show(); 
      ignoreClasses = '.s1,.s2,.s4'; 
     break; 

     default: 
      $(".interest_all").hide(); 
     } 
}); 

// field validation 
$("#leadform").validate({ 

    //I need to get the ignore class in here 
    //like ignore: '.s2,.s4,.s5' 


}); 

});

是那裏工作,爲獲取值到忽略的方式來獲得VAR ignoreClasses中.validate()


喬納森,

非常感謝。但有一個問題。整個表單驗證僅在用戶更改#Relationship選擇框時纔有效。如果用戶剛完成他們的名字,那麼點擊提交表格根本沒有被驗證。

+0

你是什麼意思**將var變成.validate()**? – Blender

回答

0

$("#leadform").validate({ ignore: ignoreClasses});

你傳遞一個對象到validate method,所以你必須使用JSON語法。另外,我建議你緩存你的jQuery選擇器以獲得更好的性能(並不是說在這種情況下它會很重要,但這是一個很好的做法)。

http://jsfiddle.net/jondum/Tua6c/

0

,如果你想.validation()ignoreClasses您已在change事件偵聽器中指定的運行,你必須從事件偵聽器內調用.validation()方法。實際上,當.validate()運行時,ignoreClasses將不會被定義。

$(document).ready(function() { 

    var ignoreClasses = ""; 

    var $interests_all = $(".interest_all"); 

    //this hides or shows the specific sections base ond the relationship select 
    $("#relationship").change(function() { 
     switch (this.value) { 

     case 'prospective-customer': 
      $interests_all.hide(); 
      $("#interest_1").show(); 
      ignoreClasses = '.s2,.s4,.s5'; 
      break; 
     case 'current-cutomer': 
      $interests_all.hide(); 
      $("#interest_2").show(); 
      ignoreClasses = '.s1,.s4,.s5'; 
      break; 
     case 'prospective-partner': 
      $interests_all.hide(); 
      $("#interest_3").show(); 
      break; 
     case 'applicant': 
      $interests_all.hide(); 
      $("#interest_4").show(); 
      ignoreClasses = '.s1,.s2,.s5'; 
      break; 
     case 'vendor': 
      $interests_all.hide(); 
      $("#interest_5").show(); 
      ignoreClasses = '.s1,.s2,.s4'; 
      break; 

     default: 
      $interests_all.hide(); 
     } 
     // field validation (now being called from within the change listener) 
     $("#leadform").validate({ 
      ignore: ignoreClasses 
     }); 
    }); 
}); 
+0

非常感謝您的努力,以獲得值忽略。但有一個問題。整個表單驗證僅在用戶更改#Relationship選擇框時纔有效。如果用戶剛完成他們的名字,那麼點擊提交表格根本沒有被驗證。 – Marc

+0

然後你需要做的就是聲明'ignoreClasses'('(document).ready()'的'_outside_,使它成爲一個全局變量。然後附加你的'validate'函數來通過使用提交監聽器來提交:'$('form#leadform')。submit(function(){$(this).validate({ignore:ignoreClasses});});' –

+0

你也可以在'ignoreClasses'中放置它,並聲明它爲'window ['ignoreClasses'] =「」'。然後您將在提交處理程序中以相同的方式引用它。 –