2012-06-20 168 views
0

你必须原谅我在这里提出一个微不足道的问题,但我通常好奇是否有更好的方法来检测按钮是否被按下。我猜这也适用于锚定标签。jQuery - 检测按钮是否被按下

目前我有两个提交按钮(所以我不能在这种情况下使用$(form).submit),当它们被激活两者将改变另一个字段:

<button id="accept" type="submit">Accept</button> 
<button id="decline" type="submit">Decline</button> 

要做到这一点我已经检测到一个点击事件,和输入单独按键事件:

$('#accept').click(function(){ $('#decision').val('Agree'); }) 
$("#accept").keyup(function(event){ 
    if(event.keyCode == 13){ 
     $('#decision').val('Agree'); 
    } 
}); 

我想比什么都重要,我不知道是否有简化此代码的方式,因为它是相当麻烦的,尤其是如果有很多处理的(你可以创建一个功能,但这还不是她的步骤),并且由于jQuery似乎涵盖了大部分内容,所以在通过拖网互联网找不到更清洁的解决方案后,我感到很惊讶。

(与上面我很担心其他的方式来模仿按下按钮,如打空间,虽然这似乎是盖的!)

谢谢!

回答

2

对于按钮元件,无论是空格键和上的按钮will generate a click event according W3C event specifications回车键感印刷机。你不应该做任何特殊的处理来处理。

至于使用$(form).submit(),你可以。只要改变你的按钮由chaning他们不会隐表单提交给push buttons (W3C)

<button type="button" id="...">...</button> 

然后在你的处理器,你可以这样做:

$('#accept,#decline').click(function(event){ 
    $('#decision').val($(event.target).text()); 
    $(form).submit(); 
} 

如果需要,你可以做$(event.target).text()一些处理如果需要的话,使'拒绝'空/空字符串。

+0

啊!我从来不知道这一点,这也解释了为什么空格键会触发事件,谢谢!很好的解决方案 – Nick

1

我想我理解你的问题,并且在这个相关主题中可能会有一些优先级。

jQuery: how to get which button was clicked upon form submission?

这种方法避免了添加。点击()事件到每个按钮,尽管这可能是您的应用程序一个可行的选择。

希望这会有所帮助! 梅森

+0

谢谢,那不是我正在问的,但它确实提供了一个非常好的替代解决方案! :-) – Nick

2

你可以做这样的事情,使点击好一点:(使用功能得到更好的东西需要在这里):

function setDecision(value){ 
    $('#decision').val(value); 
} 

$('button[type=submit]').click(function() { 
    var val = $(this).text(); 

    setDecision(val); 
}); 

$("button[type=submit]").keyup(function(event){ 
    var val = $(this).text(); 

    if(event.keyCode == 13){ 
     setDecision(val); 
    } 
}); 
+0

嗯,我觉得一个函数可能是必要的,谢谢,但是这个代码很好,很灵活! – Nick

1

添加name="decision"value="Accept"/value="Decline"(相应)至提交按钮

这样你不需要的JavaScript在所有处理这...

而如果“接受”按钮是第一个,然后按进入侧上的任何形式的场也会触发一个

样品:

<form action="1.html" method="get"> 

<input type="text" name="in"> 

<button type="submit" name="decision" value="Accept">Accept</button> 
<button type="submit" name="decision" value="Decline">Decline</button> 

</form> 
+0

非常感谢,一个很好的解决方案,但不幸的是(正如前面讨论的另一个问题),由于我在做jQuery调用的方式,我确实需要隐藏功能 – Nick

相关问题