Ajax.BeginForm +阻止提交输入

时间:2011-10-06 16:05:42

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

我正在使用带有不引人注意的ajax的ASP.NET MVC 3,我想通过输入阻止提交表单。我写了以下代码来做到这一点

$(window).keypress(function (event) { 
    if (event.which == 13) { 
       event.preventDefault(); 
    } 
});

不幸的是,IE8上没有触发此事件。还有其他选择吗? (我正在使用jQuery 1.6.4)

3 个答案:

答案 0 :(得分:2)

您应该关注DOM中的下一个元素

$(window).keypress(function (event) { 
    if (event.which == 13) { 
       $(this).next().focus(); 
    } 
});

检查下一个元素类型,如果类型不是textarea(输入允许),或者按钮/提交(输入=单击),那么我们只需选择下一个元素。

例如,

if (e.which == 13) {
        var $targ = $(e.target);

        if (!$targ.is("textarea") && !$targ.is(":button,:submit")) {
            var focusNext = false;
            $(this).find(":input:visible:not([disabled],[readonly]), a").each(function(){
                if (this === e.target) {
                    focusNext = true;
                }
                else if (focusNext){
                    $(this).focus();
                    return false;
                }
            });

            return false;
        }
    }

答案 1 :(得分:0)

编辑:哦,只是重读你的问题 - 在IE中你可能想要定位$(window).keydown(function(event)而不是按键

我认为在IE中,您必须查看event.keyCode属性

$(window).keypress(function (event) {
if(event && event.which){ //if which property of event object is supported (NN4)
characterCode = event.which //character code is contained in NN4's which property
}
else{
characterCode = event.keyCode //character code is contained in IE's keyCode property
}

if (characterCode == 13){
     event.preventDefault();
}

答案 2 :(得分:0)

检查this以确保按键或按键甚至在浏览器中被选中。如果您不希望该事件返回任何内容,则只需return false;