Javascript JQuery验证表单,但不是“提交”按钮

Javascript JQuery验证表单,但不是“提交”按钮,javascript,jquery,html,twitter-bootstrap,validation,Javascript,Jquery,Html,Twitter Bootstrap,Validation,我使用验证表单中的某些字段,但我不想使用提交按钮,我只想使用,一旦单击使用JQuery我想调用我的控制器,唯一的问题是它不是提交按钮,因此,即使字段错误或未验证,它也会调用控制器,即使字段值错误,因为我正在使用。单击该按钮时,JQuery的click()事件,我想知道,当我在字段上有错误的值,并且验证显示错误消息时,即使单击按钮,也不要调用我的操作控制器,我如何才能达到这一点? 这是我的html代码: <script src="~/js/jquery.validate.js"><

我使用验证表单中的某些字段,但我不想使用
提交
按钮,我只想使用
,一旦单击使用
JQuery
我想调用我的控制器,唯一的问题是它不是
提交
按钮,因此,即使字段错误或未验证,它也会调用控制器,即使字段值错误,因为我正在使用
。单击该按钮时,
JQuery
的click()
事件,我想知道,当我在字段上有错误的值,并且验证显示错误消息时,即使单击按钮,也不要调用我的操作控制器,我如何才能达到这一点? 这是我的
html
代码:

<script src="~/js/jquery.validate.js"></script>
<form action="post" class="rightform newsletter" id="formSubscription">
    <div class="title">
        <img src="http://ligresources.blob.core.windows.net/public/UK/Content/Images/newsletter.png" alt="">NEWSLETTER
    </div>
    <input type="text" id="txtFullName" name="fullName" placeholder="Full name" required>
    <input type="email" id="txtEmail" name="email" placeholder="Email address" required>
    <button type="button" id="btnSubscription" data-url="@Url.Action("SubscriptionEmail","Email")" style="background-color:#f66804;">SUBSCRIBE TO NEWSLETTER</button>                
</form>
$(document).ready(function () {
    $("#formSubscription").validate({
        rules: {
            email: {
                required:true,
                email:true
            },
            fullName: {
                required:true
            }
        },
        messages: {
            email: {
                required: "Please enter an email address",
                email: "Please enter a valid email address"
            }
        }
    });
});
这是当点击
btnSubscription
时,我暂时要抛出的JQuery函数:

$(document).ready(function () {
    $("#btnSubscription").click(function () {
        SendSubscription();          
    }),
    return false;
}),

function SendSubscription() {       
    $.ajax({
        type: "post",
        url: $("#btnSubscription").data("url"),
        data: { fullName: $("#txtFullName").val(), emailAddress: $("#txtEmail").val() },
        success: function () {
            alert("email sent")
        },
        error: function () {
            alert("An error occurred..")
        }
    });
}

您应该使用type
submit
,然后您可以使用submitHandler来管理您想做的其他事情,例如:

$("#formSubscription").validate({
  submitHandler: function(form) {
    // do other things for a valid form
    form.submit();
  }
});

在文档中获取战利品:

在SendSubscription函数中添加一个if:

if (yourValidationDidntPass) {
  //do whatever you want
}
else {
  $.ajax({...});
}

设置
.validate()
后,只需在
处理程序中调用
.valid()
方法。单击()。这是submit自动执行的操作,但您可以使用
.valid()
方法手动调用它

如果您不想使用submit按钮,则可以使用onfocusout事件调用该功能。将输入更改为
type=“email”
只需在单击手柄中的表单上调用.valid()函数。下面是我如何构建一个更通用的示例:一个与您的代码无关的示例。。。此外,它不需要任何验证插件,因为提交事件只有在有效时才会发生