【问题标题】:JQuery client side continues even if invalid mvc 4即使无效的mvc 4,JQuery客户端也会继续
【发布时间】:2014-11-26 15:37:03
【问题描述】:

脚本

$(document).ready(function () {
"use strict";
$.validator.unobtrusive.parse($("#form"));
$("#submit").on("click", function () {
    var form = $("#form");
    form.validate();
    if (form.valid()) {
    }
    return false;
});

});

HTML

        <span>Please enter the amount of orders you wish you process:</span>
    <br>
    @Html.TextBoxFor(m => m.OrderModel.AmountOfOrders, new {id = "AmountOfOrders"})
    @Html.ValidationMessageFor(m=> m.OrderModel.AmountOfOrders)

    <input type="submit" value ="Submit" id="submit" />

我的脚本似乎有问题。 C# 的 DataAnnotations 显示在视图上,但即使必填字段为空,它仍将继续到另一个页面。

【问题讨论】:

  • "use strict" 在那里做什么?
  • 你的意思是“它仍然会继续到另一个页面”,你发布的JS没有导航到任何地方,它只是调用一些验证方法然后返回false,无论验证结果如何.
  • 请同时显示您的 HTML,以便发现任何其他问题 :)
  • “use strict”是我在用JLint做事的时候加的,你可以忽略

标签: c# jquery asp.net-mvc forms asp.net-mvc-4


【解决方案1】:

如果你的按钮没有给出

type="button"

,默认为

type="submit"

考虑到您正在使用表单,当您的 javascript 正在执行时,该表单将通过单击按钮提交。

【讨论】:

    【解决方案2】:

    试试这个。

    $("#submit").on("click", function (event) {
        var form = $("#form");
        form.validate();
    if (form.valid()) {
    }
    else
    {
        event.preventDefault();
        return false;
    
    }
    });
    

    【讨论】:

    • return false 同时执行 event.preventDefault() event.stopPropagation()
    【解决方案3】:

    始终对表单使用 submit 事件,而不是 click 事件。这样它就可以使用按键:

    $("#submit").on("submit", function () {
        var form = $("#form");
        form.validate();
        if (form.valid()) {
            // Proceed with submit!
        }
        else {
            // Stop submit!
            return false;
        }
    });
    

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-07-02
    • 1970-01-01
    • 1970-01-01
    • 2013-04-12
    • 2012-08-17
    • 2017-03-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多