我正在使用带有不引人注意的ajax的ASP.NET MVC 3,我想通过输入阻止提交表单。我写了以下代码来做到这一点
$(window).keypress(function (event) {
if (event.which == 13) {
event.preventDefault();
}
});
不幸的是,IE8上没有触发此事件。还有其他选择吗? (我正在使用jQuery 1.6.4)
答案 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;