Jquery Html.BeginForm使用onSubmit进行验证

Jquery Html.BeginForm使用onSubmit进行验证,jquery,.net,asp.net-mvc,Jquery,.net,Asp.net Mvc,我正在尝试提交我的表单,但是我添加了一些jquery以进行验证,这是有效的: $(function validateForm() { $("#newMonoReading").on('focusout', function () { var str = ""; var initialMonoReading = $('#InitialMonoReading').val(); var newMonoReading = $('#newM

我正在尝试提交我的表单,但是我添加了一些jquery以进行验证,这是有效的:

    $(function validateForm() {
    $("#newMonoReading").on('focusout', function () {
        var str = "";

        var initialMonoReading = $('#InitialMonoReading').val();
        var newMonoReading = $('#newMonoReading').val()
        if (~~newMonoReading < ~~initialMonoReading) {
            $('#MonoErrorMessage').text("New Mono Readings must be MORE than existing");
            $('#MonoErrorMessage').show();
            return false;


        } else {
            $('#MonoErrorMessage').hide();

        }
    });
});
$(函数validateForm(){
$(“#newMonoReading”).on('focusout',function(){
var str=“”;
var initialMonoReading=$('#initialMonoReading').val();
var newmonoreding=$('#newmonoreding').val()
如果(~~newMonoReading<~~initialMonoReading){
$(“#MonoErrorMessage”)。文本(“新的Mono读数必须大于现有读数”);
$('#MonoErrorMessage').show();
返回false;
}否则{
$('#MonoErrorMessage').hide();
}
});
});
但问题出在提交按钮上

  <input type="submit" value="Submit" class="btn btn-primary">

如果有一个错误,提交按钮仍然工作,我需要它显示没有错误消息,然后发送,但我尝试使用表单的onsubmit,但它不工作,它仍然提交,即使值较小,错误消息正在显示

这是html.BeginForm。我想错误可能就在这里。我不是很确定

         <div class="modal-body">
        @using (Html.BeginForm("Save", "ReadingsEntry", FormMethod.Post, new { enctype = "multipart/form-data", onsubmit = "validateForm()" }))
        {

@使用(Html.BeginForm(“Save”、“readingentry”、FormMethod.Post、new{enctype=“multipart/formdata”、onsubmit=“validateForm()”}))
{
任何想法

请尝试以这种方式使用:

  <div class="modal-body">
        @using (Html.BeginForm("Save", "ReadingsEntry", FormMethod.Post, new { enctype = "multipart/form-data"}))
        {

 <input type="submit" value="Submit" onclick="return validateForm()" class="btn btn-primary">

@使用(Html.BeginForm(“保存”、“读取条目”、FormMethod.Post、新的{enctype=“multipart/formdata”}))
{

这是正确的摘要吗

提交时,您希望使用jQuery函数验证表单。 如果验证通过,则希望继续提交,否则希望取消提交

如果我的总结不正确,那么请进一步澄清你的问题

如果我对其进行了准确总结,您可以将jQuery函数更改为:

$(函数validateForm(事件){
event=event | | window.event | | event.src元素;
var initialMonoReading=$('#initialMonoReading').val();
var newmonoreding=$('#newmonoreding').val()
如果(~~newMonoReading<~~initialMonoReading){
$(“#MonoErrorMessage”)。文本(“新的Mono读数必须大于现有读数”);
$('#MonoErrorMessage').show();
event.preventDefault();
}
否则{
$('#MonoErrorMessage').hide();
}
});
创建标记时,请使用以下行:

@using (Html.BeginForm("Save", "ReadingsEntry", FormMethod.Post, new { enctype = "multipart/form-data", onsubmit = "validateForm(event)" }))
这对我有用

function validateForm() {
    if ($('#newMonoReading').val() == 'bla bla bla') {
        alert('bla bla bla');
        return false;
    }

    else {
        form1.submit();
    }


@using (Html.BeginForm("action", "controller", FormMethod.Post, new { @id = "form1"}))
{
<input type="text" id="newMonoReading"><br>
<input type="submit" value="Submit" onclick = "return validateForm();" class="btn btn-primary">
}
函数validateForm(){
如果($('#newMonoReading').val()=='bla bla bla'){
警报(‘呜呜呜呜’);
返回false;
}
否则{
表格1.提交();
}
@使用(Html.BeginForm(“action”、“controller”、FormMethod.Post、new{@id=“form1”}))
{

}
这对我来说很有用

@using (Html.BeginForm("Tag", "Translations",  FormMethod.Get, new { enctype = "multipart/form-data", onsubmit = "return validateTagInput()" }))
JQuery

 <script src="http://code.jquery.com/jquery-1.10.1.min.js"></script>
   <script>
     function validateTagInput() 
        {
        //do validation
        if (x,y,z)
        {
        return true; //let page be submitted
        }
        else {
        return false; //do not let submission go through
             }
        }
 </script>

函数validateTagInput()
{
//验证
if(x,y,z)
{
返回true;//让页面被提交
}
否则{
return false;//不要让提交通过
}
}

您需要处理
submit
事件,执行验证,然后在出现错误时取消验证,但您可以只使用
[GreaterThan]
attribute我这样做了,但现在问题是,它在代码中给了我一个错误,说“用户代码未处理”但是我希望它保留在显示错误消息的表单上确定,这是不可能的..event.preventDefault();将永远不允许提交表单。请在event.preventDefault()之后发出警报(“Helloo,验证失败..!!”),并在$('.\MonoErrorMessage')之后发出另一个警报(“Helloo,验证成功..!!”)。隐藏();让我们知道,弹出了哪一个?@你为什么要用“~~”,我从来没有用过这个OK,当我在google chrome上试用时,它不起作用,但在ie上,它给了我错误。它不喜欢event.preventDefault();@m ali:请检查我编辑的代码。它起作用了。我已经验证过了。