我有点问题。当按下键 Enter 时,我已经使用jQuery的方法trigger
在按钮上启动事件click
。我需要删除该触发器(将来,按键 Enter ,不要触发按钮上的事件click
)。
这是代码:
$(document).keyup(function(e){
if (e.keyCode == 13) $('#thebutton').trigger('click');
});
有可能吗?感谢。
嗨,我在找到解决方案后编辑我的帖子。 我的整个问题是:
$('#thebutton').on('click', function(){
alert('click on the button');
});
$(document).on('keyup',function(e){
if (e.keyCode == 13) $('#thebutton').trigger('click');
// This cause a loop of alert() popups pressing key 'enter'
// Alex fix it in this way:
$('#thebutton').on('click', function(){
alert('hi there');
});
var someContition = false;
$(document).on('keypress',function(e){
if (e.keyCode == 13 && !someContition) $('#thebutton').trigger('click');
秘诀是keyup
改变keypress
。测试代码我发现它不是必要的标志。
谢谢你们所有人。
答案 0 :(得分:0)
使用按键代替。试试这个 DEMO :
var someContition = false;
$(document).on('keypress',function(e){
if (e.keyCode == 13 && !someContition) $('#thebutton').trigger('click');
});
$('#thebutton').on('click', function(){
alert('hi there');
});
答案 1 :(得分:0)
如前所述,请使用on()
和off()
,但不要使用click事件。取而代之的是keyup,因为那是你真正想要删除的内容。
$(document).on('keyup',function(e){
if (e.keyCode == 13) $('#thebutton').trigger('click');
});
然后是
$(document).off('keyup');
如果你仍然需要键盘事件(例如其他键),你必须设置一个标志或其他东西,并在触发按钮点击之前检查它。
答案 2 :(得分:0)
这可能听起来很愚蠢,但只是评论或删除该行:
$(document).keyup(function(e){
//if (e.keyCode == 13) $('#thebutton').trigger('click'); //Comment or delete this line
});
(如果你无法控制这段代码,你应该在问题中指明它,如果是这样的话:愚蠢地回答愚蠢的问题,如果没有,只要忽略这一点;))。
干杯
答案 3 :(得分:0)
以下是HTML:
<input type="button" id="clickme" value="cick me "/>
以下是jquery:
$(document).on('keyup',function(e){
if (e.keyCode == 13) $('#clickme').trigger('click');
});
$('#clickme').click(function(){
alert('i was clicked !');
});