2011-11-25 111 views
1

我正在處理具有多個表單的網頁,一些基本的HTML表單和一些AJAX表單。我有一個創建的輸入驗證,讓我舉個例子...如果輸入有一個class =「required」,只要提交按鈕被按下,如果任何需要的類是空的,那麼表單不會提交。這很好,直到你有多個表單,其中必填字段不適用於你提交的部分。當存在多個表單時選擇表單子女jQuery

我能夠找到最接近的形式$(this).closest(「form」),它正確地獲取表單元素,然後我只需要能夠通過該表單的子元素進行循環。我已經嘗試過:.children(':input'),.find('input')並誠實地向許多人列出。

下面是當一個按鈕被選中

$('#formSubmit').click(function (e) { 
     var submit = true; 
     var form = $(this).closest("form"); 
     var formID = $(form).attr("id"); 
     e.preventDefault(); 

     $(form).children(":input").each(function() { 
      if ($('#ERROR').length > 0) { 
       submit = false; 
       alert("Please fix errors to continue"); 
      } 
      $('.required').each(function() { 
       if ($(this).val() == "" || $(this).val() == undefined) { 
        submit = false; 
        $(this).css({ 'background-color': '#fef236' }); 
       } 
      }); 
     }); 
     if (submit == true) { 
      this.form.submit(); 
     } 
    }); //End of #formSubmit 

而且我已經開始建立與是GUID的所以他們會很獨特,讓我瞄準的東西沒有任何問題的IDS形式感興趣的代碼,只需想拋出在那裏,如果它能夠幫助促成一個解決方案

我感謝所有幫助=)

回答

1

$(this).closest("form").find(":input")就是找到所有輸入的正確道路。我認爲問題在於$('.required')。該呼叫從全球層面重新開始搜索,從而找到頁面上所有表單的輸入。

我並不認爲首先需要做.find(":input")。只需通過form.find(".required")獲取必填字段並循環瀏覽。

+0

哇...你真的在5分鐘內解決了我的問題,我問它..我非常感謝它!從來沒有意識到我是通過要求$('。required)來開始整個事情的。現在它是有道理的,再次感謝你;) – afreeland

相關問題