javascript preventDefault在asp mvc

时间:2015-12-24 08:59:15

标签: javascript jquery asp.net asp.net-mvc

我想在登录验证失败时禁用网站上的所有链接。当用户名不可用时,它必须防止用户在用户创建向导中执行后续步骤时的情况。不幸的是它不起作用,所有链接都启用了,而登录不正确我可以继续前进到下一步。这些是我的脚本:

$(document).on("change", "#User_UserName", function (){
    var name = $('#User_UserName').val();
    Users.Validate(name);
});

Validate: function(userName) {
    SiteLoader.LockLoader();
    $.ajax({
        url: "/User/ValidateUsername",
        type: 'POST',
        data: { userName: userName },
        complete: function() {
            SiteLoader.UnLockLoader();
        },
        success: function(data) {
            if (!data.valid) {
                Users.BlockNextSteps();
                $('#errorContainer').html('<div class="validation-summary-errors">' +
                    '<ul><li>Username unavailable.</li></ul></div>');
            } else {
                $('#errorContainer').html('<div class="validation-summary-ok">' +
                    '<ul><li>Username available</li></ul></div>');
            }
        }
    });
},
BlockNextSteps: function() {
    var a = document.getElementsByTagName('a');
    for (var i = 0; i < a.length; ++i) {
        a[i].addEventListener('click', handleAnchor, false);
    }

    function handleAnchor(e) {
        e.preventDefault();
    }
},

1 个答案:

答案 0 :(得分:0)

您不应该为页面上的每个链接添加处理程序。听起来不对。此外,还可以有其他处理程序,可以在handleAnchor之前调用 - JS不提供任何处理程序执行顺序。

总的来说,这听起来像个糟糕的主意。您可能需要禁用的唯一链接是“下一步”按钮。此外,使用JS限制访问您网站的任何部分是完全没用的。