jQuery live预防违规失败的输入元素
-
28-09-2019 - |
题
我有以下代码段:
$('#messages input').live('keydown', function(e){
if(e.keyCode == 13) {
alert($(this).attr('value'));
e.preventDefault();
return false;
}
});
其中“ #message输入”显然是一组输入文本元素。我想捕获“ Enter”键,并防止其刷新页面。但是,它每次都失败了。该警报正常工作,但是看来预防违规()不起作用。
有人有想法么?
编辑: 我应该提到我正在ASP.NET中工作,并且它在表单元素内部。将其从表单元素中删除可以解决问题,但是我想知道为什么DestrestDefault()不起作用。
解决方案 2
具有讽刺意味的是,正是警报本身引起了问题。
AFAICT,警报会在DestrestDefault()生效之前停止JavaScript执行,但是浏览器继续处理击键,并触发表单提交。
很奇怪,但是你有。
其他提示
可能会尝试
e.stopPropagation()
$('#form_deal_step1').live('submit',function(){
$('.column .column_child select').not(':hidden').each(function(ev){
if($(this).val()=='?')
{
alert('Please select the ages of each child.');
ev.preventDefault();
return false;
}
});
})
var age_selected=1;
$('.column .column_child select').not(':hidden').each(function(){
if($(this).val()=='?')
{
age_selected=0;
}
});
if(age_selected==0)
{
alert('Please select the ages of each child.');
return false;
}
我认为表格已提交 keypress
, , 不开 keydown
. 。尝试
$('#messages input').live('keypress', function(e){
if(e.keyCode == 13) {
alert($(this).attr('value'));
e.preventDefault();
return false;
}
});
据我所知,页面刷新是表单而不是输入按钮的默认函数,因此,您应该防止默认值在表单上而不是输入上。
与:
$('#target').submit(function() {
return false;
});
不隶属于 StackOverflow