jQuery validate();仅在单击一种类型的提交按钮时进行验证

时间:2010-02-10 20:30:55

标签: javascript jquery jquery-validate validation

我有一个非常复杂的问题,我已经研究过,并且空白了;

情境: 我有一个表单,带有jQuery bassistance.de的validate()插件(http://docs.jquery.com/Plugins/Validation)。

然而,作业是否完美呈现;我有两种类型的提交按钮。

一个像往常一样提交表单,触发我的后端验证并返回错误或成功。

另一种类型,是向所有激烈的目的提供浏览器的提交按钮,但它告诉我的后端添加另一部分输入(即,就业历史的重复元素。)我希望用户是能够添加重复元素而无需先完成表单的其余部分。所以点击第二种类型的提交我想BYPASS validate();

HTML:

<form method="post" action="" id="ApplicationForm" name="ApplicationForm">

  <input id="job1" name="job1" class="required"/>
  <input type="submit" name="delete_job1" value="Delete" class="delete" />

  <input id="job2" name="job2" class="required"/>
  <input type="submit" name="delete_job2" value="Delete" class="delete" />

  <input type="submit" name="add_job" value="Add Job" class="add" />

  <input type="submit" name="ApplicationForm" value="Save Details" class="submit" />

</form>

我已经为下面的真实提交按钮尝试了一个监听器,但这只是停止验证所有进一步;

$(document).ready(function()
{
    var submitPress

    $(".submit").click(function()
    {
        submitPress = true;
    });

    if (submitPress)
    {
        $('form#ApplicationForm').validate();
    }
});

我猜这是因为validate();听众是在页面的初始加载时设置的,而不是在提交时...

是否有针对validate()的规则或设置;我很想念,我可以利用,或者甚至是一个善良的黑色JS。

许多人可以提供帮助,我的结果就是我的结局。

您诚挚的, 工作到很晚,AGAIN,开发人员

2 个答案:

答案 0 :(得分:23)

http://docs.jquery.com/Plugins/Validation/Reference#Skipping_validation_on_submit

基本上,将class="cancel"添加到您不想触发验证的提交按钮。

<input type="submit" value="I Validate" />
<input type="submit" class="cancel" value="I skip Validation" />

答案 1 :(得分:0)

它不起作用,因为你提供了输入元素的id,在页面加载后会变成这样的submit_1_btnSubmit

因此,要解决此错误,您可以使用ClientIDMode="Static"

(if you are working on asp.net)
<asp:Button ID="btnSubmit" runat="server" OnClick="btnSubmit_Click" Text="Submit" CssClass="Submit" ClientIDMode="Static" />

else

you may access `clientIDmode`  property on button control dynamically.