多表单页面的表单选择器

时间:2014-05-20 22:21:38

标签: jquery html forms validation jquery-selectors

我的页面上有六个表格。我正在使用jQuery 2.02,JQM 1.3.1以及带有附加方法附加组件的jQuery Validate 1.12.0来尝试验证表单。当用户点击提交按钮时,我正在尝试使用此选择器来获取相关表单:

$('[id^=formEvent_]').validate({

效果很好......对于HTML中遇到的第一种形式(formEvent_assign,请参阅下面的小提琴),换句话说,无论用户实际使用哪种形式,它总是选择第一种形式。

我试过

$('[id^=formEvent_]').closest('form').validate({

为表格EG设置变量:

var formPointer = "formEvent_terminate";
$('#' + formPointer).validate({

以及:

var formPointer = "#formEvent_terminate";
$(formPointer).validate({

这一切都没有,以及我在SO上发现的其他一些东西。我一直在努力工作几个小时,这看起来很简单。我可以在console.log中看到正在创建正确的表单对象,我可以看到它的子节点(所有输入)等,但选择器不允许运行验证。

我应该使用哪个选择器,以便我可以让各个表单中的“提交”按钮正确运行验证?

以下列出了我已经阅读并尝试过的看似相关的SO问题,但最终由于某种原因无法开始工作:

Jquery validating a specific form on a page with multiple forms

this input submit selector with closest form submit

Javascript/jQuery: Why different result for event.target using tag Vs. other Elements in console.log, alert() with $(this) in mind

这是完整的验证码&如果表单有效,则调用提交例程:

$('[id^=formEvent_]').validate({
    submitHandler: function ( form, event) {
        isFormValid( form, event );
    },
    rules: {
        pcbid_assign: {
            required: true,
            digits: true,
            rangelength: [3, 6]
        },
        pcbid_terminate: {
            required: true,
            digits: true,
            rangelength: [3, 6]
        },
        input_reason_terminate: {
            required: true
        },
        input_assign_sbeJobNumber: {
            require_from_group: [1, ".assign_group"]
        },
        input_assign_sbeModelNumber: {
            require_from_group: [1, ".assign_group"]
        },
        input_assign_sbePN: {
            require_from_group: [1, ".assign_group"]
        },
        input_assign_sbeSerialNumber: {
            require_from_group: [1, ".assign_group"]
        }
    },
    messages: {
        pcbid_assign: "Please enter a valid PCBID with 3-6 digits.",
        input_assign_sbeJobNumber: "Please enter a valid job number.",
        input_assign_sbeModelNumber: "Please enter a valid model number.", 
        input_assign_sbePN: "Please enter a valid part number.",
        input_assign_sbeSerialNumber: "Please enter a valid serial number.",
        pcbid_terminate: "Please enter a valid PCBID with 3-6 digits.",
        input_reason_terminate: "Please enter a reason for this PCBID board's termination."
    }
});

以下是一些展示预期行为的小提琴(因为它们每个只有一个表单):

Assign with validation

Terminate with validation

2 个答案:

答案 0 :(得分:1)

如果提交按钮在表单内,您可以使用这个简单的“vanilla”JavaScript。

<input type="submit" value="Submit" onclick="$(this.form).validate();"/>

this.form将始终为您提供包含的表单。

答案 1 :(得分:1)

您是否尝试使用.each()方法? 像$('[id^=formEvent_]').each(function() { $(this).validate({....

这样的东西