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.");
        }
4

3 回答 3

3

你实际上并没有引用表单,这就是为什么它说它是未定义的。您需要在 ajax 调用之前添加以下内容:

var 形式 = $(this);

另外,为了验证:

return $(form).valid()如果无效,将阻止表单提交

于 2013-07-04T22:54:01.240 回答
1

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

单独的 preventdefault 仍然会允许错误冒泡,这可能不是您想要的。

于 2013-07-04T22:46:15.427 回答
0

我认为最好的方法是在出现错误时返回 false,而不是 .preventDefault();

于 2013-07-04T22:47:54.287 回答