jQuery:如何按名称检测表单

时间:2012-04-04 17:10:39

标签: jquery

我有问题将jQuery添加到现有代码中,请帮忙。

我们在页面上出现了几次相同的表单(相同的表单名称,相同的字段,相同的提交按钮,没有为表单定义的id或类),现在我需要使用jQuery验证表单,而不是传入表单对象,jQuery可以告诉哪个表单被提交了吗?

感谢大家的回复,问题解决了: - )

5 个答案:

答案 0 :(得分:1)

根据您的问题的评论,您可能需要指定表单的上下文以及您的选择器:

$('form').submit(function() {
    var form = $(this);
    var myInputValue = $("input[name='myinput']", form).val();
    // myInputValue is now the value of the myinput control that is 
    // within the submitted form
});

请注意,jquery函数采用可选的第二个参数,它是选择的上下文。这应该可以帮助您仅在提交的表单中找到输入元素。

查看此处的文档:

http://api.jquery.com/jQuery/#expressioncontext

@ NiftyDude的答案得到了同样的问题,尽管他没有专门用jquery来获取当前提交表单的孩子。

答案 1 :(得分:0)

为了选择它,是否将#id或.class附加到<form>标记并不重要。

试试这个:

$('form').submit(function () {
   //put your ajax submission code here...
});

答案 2 :(得分:0)

$("form[name='IDENTIFIER']")如果您在一个页面上有多个表单来定位特定表单

,这将非常有用

答案 3 :(得分:0)

$('form').submit(function(e) {
   // $(this) refers to the current form being submitted

   // if you need to, for example iterate over all the inputs
   var inputs = $(this)[0].getElementsByTagName('input'); // array of inputs

   for(var i = 0; i < inputs.length; i++) { inputs[i].value; }

   // this is important to avoid recursive submit
   $(this)[0].submit();

   return false;
});

答案 4 :(得分:0)

$('form').submit(function(){
    var form = $(this);
    var inputs = $('input', this);
    var isValid = true;

    //do validation on the inputs of the form submitted.

    if (isValid) {
        //do something
    }

     return false;
});

或者,您可以捕获提交输入操作(我喜欢这样做):

$('input[type="submit"]').click(function(event){
    event.preventDefault();
    var form = $(this).nearest('form');
    var inputs = $('input', form).not(this);
    var isValid = true;

    //validate inputs
    if (isValid) form.submit();
});

请注意,根据您的代码,可能不需要isValid = true。如果您的任何元素未通过验证且表单提交将无法继续,则可将其设置为false。如果您使用的验证库为您执行此操作并提交表单(如果有效),则不需要它。

有些验证器会在每个失败的项目上设置一个无效的类,您只需检查表单中是否存在具有该类的输入,以确定是否应该提交表单。