使用jquery使用一个提交按钮验证两个表单

时间:2012-11-20 11:02:42

标签: jquery forms jquery-validate

我在1页form.php中有2个表单。在第一种形式中,我有1个输入字段和1个文本字段。第二种形式我有一个上传图片按钮,我用来上传而不重定向所以onchange我正在提交该表单。

但如果用户未选择任何图像,则不应提交最终表格。

这是我的代码:

$("#storyform").validate({
  rules: {
    story: {
      required: true,
      maxlength: 250
    },
    place: "required"


  },
  messages: {
    story: {
      required: "Please write your story",
      maxlength: $.format("At Max {0} characters !")
    },

    place: "Please write your place"

  },
  errorElement: "span",
  wrapper: "span" // a wrapper around the error message

});

2 个答案:

答案 0 :(得分:2)

分别在每张表单上初始化.validate()。然后在第二个表单的.valid()内使用submitHandler测试第一个表单是否有效。

$(document).ready(function(){

    $("#firstForm").validate({  // initialize form validation on form 1
        // rules & other options
    });

    $("#secondForm").validate({ // initialize form validation on form 2
        // rules & other options,

        errorPlacement: function(error, element) {
            $("#firstForm").valid();  // forces test on form 1 when form 2 has errors
            error.insertAfter(element); // default error placement
        },
        submitHandler: function(form) {
            if ($("#firstForm").valid()) {  // test to see if form 1 is valid before submitting form 2
               form.submit;
            }
            return false;
        }
    });

});

$("#firstForm").valid()用于以下两种情况的上述两个位置:

1)表格#2 有效;因此,我们必须在submitHandler:内测试表单#1的有效性,作为表单提交的条件。

2)表格#2 无效;所以我们必须在errorPlacement:内触发表格#1有效性测试。由于我们正在使用errorPlacement:,因此我们必须指定它,否则错误将不会出现。在示例中,我只使用了默认的错误放置代码。


修改

为了让第二个表单与第一个表单同时显示错误,还要将.valid()添加到第二个表单的errorPlacement:选项,这会在表单2出错时强制对表单1进行测试。请参阅上面的编辑代码。

工作演示:http://jsfiddle.net/eLsDs/1/


编辑2

我看不到您的HTML,因为您没有包含它,但我修改了我的演示以包含您的OP中的代码。

使用OP代码进行演示:http://jsfiddle.net/eLsDs/2/

答案 1 :(得分:1)

您必须有理由使用两个表格,因此请调用此表格以检查其他表格是否有效

$('#otherform').validate().valid()