2011-11-25 66 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