2012-11-02 96 views
1

我想解決的問題,我需要隱藏在選項卡後面的表單域。jQuery在選項卡驗證只適用於第一次提交

我已經設法讓這一半工作,所以當你點擊提交按鈕任何必需的+隱藏字段,它會自動顯示此標籤。

但問題是當你: 1.加載頁面,點擊提交,這工作正常。 2.回到第一個選項卡,再次點擊提交,沒有任何反應。

http://jsfiddle.net/3xEch/

// Form validator 
var theForms = $("form[method=post]:not(.noValidate)"); 
if (theForms.length){ 
    theForms.each(function(){ 
     var $dis = $(this); 

     if($dis.hasClass("validateHidden")){ 
      jQuery.validator.setDefaults({ 
       ignore: '' 
      }); 
     } 

     validater = $dis.validate({ 
      errorPlacement: function(error, element) { 
       var trigger = element.next('.ui-datepicker-trigger, .input-label'); 
       if(!trigger.length){ trigger = element.parent('label'); } 
       var labelWidth = element.parent("p").not(".full").find("label").eq(0).width(); 
       error.insertAfter(trigger.length > 0 ? trigger : element) 
        .css("marginLeft", labelWidth); 

       // Check if hidden inside tab 
       if(element.parents(".tab").is(":hidden")){ 
        var tabs = element.parents(".tabs"); 
        tabs.find(".tab").hide(); 
        var tab = $("#"+element.parents(".tab").attr("id")); 
        tab.show(); 
        tabs.find(".tabmenu li").removeClass("selected"); 
        tabs.find(".tabmenu li").eq(tab.index()-1).addClass("selected"); 
       } 
      } 
     }); 

     $('.tabs').bind('tabsselect', function(){ 
      validater.resetForm(); 
     }); 
    }); 
} 

回答

1

而不是上運行$(document).ready()這段代碼 - 只要顯示第一個選項卡運行該代碼?我猜測代碼在第一次後不工作,因爲事件綁定到HTML元素,當點擊另一個選項卡時,這些元素被清除。

相關問題