我有以下javascript在我的页面似乎不工作。
$('form').bind("keypress", function(e) {
if (e.keyCode == 13) {
e.preventDefault();
return false;
}
});
我想在进入时禁用提交表单,或者更好的是,调用我的ajax表单提交。任何一种解决方案都是可以接受的,但上面包含的代码不会阻止表单提交。
我有以下javascript在我的页面似乎不工作。
$('form').bind("keypress", function(e) {
if (e.keyCode == 13) {
e.preventDefault();
return false;
}
});
我想在进入时禁用提交表单,或者更好的是,调用我的ajax表单提交。任何一种解决方案都是可以接受的,但上面包含的代码不会阻止表单提交。
当前回答
如果keyCode未被捕获,则捕获哪个:
$('#formid').on('keyup keypress', function(e) {
var keyCode = e.keyCode || e.which;
if (keyCode === 13) {
e.preventDefault();
return false;
}
});
编辑:错过了它,最好使用键up而不是按键
编辑2:在一些较新版本的Firefox中,表单提交不会被阻止,因此在表单中添加按键事件会更安全。它也不能工作(不再?),只是将事件绑定到表单“name”,但只绑定到表单id。因此,我通过适当地更改代码示例使这一点更加明显。
修改bind()为on()
其他回答
我不知道你是否已经解决了这个问题,或者现在有人试图解决这个问题,但是,这是我的解决方案!
$j(':input:not(textarea)').keydown(function(event){
var kc = event.witch || event.keyCode;
if(kc == 13){
event.preventDefault();
$j(this).closest('form').attr('data-oldaction', function(){
return $(this).attr('action');
}).attr('action', 'javascript:;');
alert('some_text_if_you_want');
$j(this).closest('form').attr('action', function(){
return $(this).attr('data-oldaction');
});
return false;
}
});
在firefox中,当你按下input并按下enter,它会提交它的上层形式。解决方案是在提交表单中添加以下内容:
<input type="submit" onclick="return false;" style="display:none" />
当你关注输入元素时,表单通常是按Enter键提交的。
我们可以在表单中的输入元素上禁用Enter键(代码13):
$('form input').on('keypress', function(e) {
return e.which !== 13;
});
演示:http://jsfiddle.net/bnx96/325/
$('form').keyup(function(e) {
return e.which !== 13
});
该事件。哪个属性规范化事件。keyCode和event.charCode。建议观看赛事。其中用于键盘按键输入。
文档。
如果keyCode未被捕获,则捕获哪个:
$('#formid').on('keyup keypress', function(e) {
var keyCode = e.keyCode || e.which;
if (keyCode === 13) {
e.preventDefault();
return false;
}
});
编辑:错过了它,最好使用键up而不是按键
编辑2:在一些较新版本的Firefox中,表单提交不会被阻止,因此在表单中添加按键事件会更安全。它也不能工作(不再?),只是将事件绑定到表单“name”,但只绑定到表单id。因此,我通过适当地更改代码示例使这一点更加明显。
修改bind()为on()