2013-07-04 93 views
1

任何人都可以帮助发现我的代码出错的地方,即使表单字段无效,我也无法阻止表单提交,我一直在这一整天,并尝试了很多方法,但没有运气。如果验证失败,防止表单提交

[Display(Name = "Amount to convert")] 
    [Required(ErrorMessage = " is required")] 
    [RegularExpression("^[0-9]+$", ErrorMessage = " requires numbers only")] 
    [Range(1, int.MaxValue, ErrorMessage = " must be more than 1")] 





$(function() { 
     // $("#frmWeightsMeasures").validate(); 
     $("#frmWeightsMeasures").submit(function(event) { 
      // var isvalidate = $("#frmWeightsMeasures").valid(); 
      // if (isvalidate) { 
       event.preventDefault(); 
      // } 
      $.ajax({ 
       type: "POST", 
       cache: true, 
       url: form.attr("action"), 
       data: form.serialize(), 
       dataType: "json", 
       error: searchFailed, 
       success: function(weightsData) { 
        $("#DisplayConversion").html(weightsData.DisplayConversion); 
       } 
      }); 
     }); 
    }); 

    function searchFailed(xhr, errorType, exception) { 
     var errorMessage = exception || xhr.statusText; 
     $("#DisplayConversion").html("Sorry, there was a problem with the search."); 
    } 

我已经添加下面的工作代码,希望这将帮助别人的未来,故事的摩托车,当修改您的代码,看你删除的内容。

$(function() { 
      $("#frmWeightsMeasures").validate(); 
      $("#frmWeightsMeasures").submit(function(event) { 
       var isvalidate = $("#frmWeightsMeasures").valid(); 
       if (isvalidate) { 
        event.preventDefault(); 
        var form = $(this); 
        $.ajax({ 
         type: "POST", 
         cache: true, 
         url: form.attr("action"), 
         data: form.serialize(), 
         dataType: "json", 
         error: searchFailed, 
         success: function(weightsData) { 
          $("#DisplayConversion").html(weightsData.DisplayConversion); 
         } 
        }); 
       } 
      }); 
     }); 

     function searchFailed(xhr, errorType, exception) { 
      var errorMessage = exception || xhr.statusText; 
      $("#DisplayConversion").html("Sorry, there was a problem with the search."); 
     } 
+0

提交如果删除'[必填]',不它返回正确的错误? – andreister

+0

嗨andreister,没有我然后得到默认mvc错误金额转换是必需的,而不是只是'是必需的' – CareerChange

回答

2

你实际上并没有引用表单,这就是为什么它没有定义。你需要你的Ajax调用之前将以下:

var form = $(this);

此外,对于验证:

return $(form).valid()将防止形式,如果无效

+1

我已经花了长期试图解决这个问题,并尝试了不同的方式,直到大约2分钟前,我才意识到我删除了这一行代码:var form = $(this);加回来,现在工作正常。对不起,花了很长时间看电脑 – CareerChange

1

你可能想尝试event.preventdefault()和event.stopPropagation()

单独的preventDefault仍允许误差泡了,你想要什么这可能不是。

+0

嗨EJ Brennan,仍然得到相同的错误,0x800a1391 - JavaScript运行时错误:'form'是undefined – CareerChange

0

我认为最好的是在错误的情况下返回false,而不是.preventDefault();

相关问题