jQuery - 检测按钮是否被按下

时间:2012-06-20 14:37:33

标签: events jquery

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

目前我有两个提交按钮(因此我不能在这种情况下使用$(form).submit),这两个按钮在激活时都会更改另一个字段:

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

为了达到这个目的,我已经检测到了一个click事件,并分别检测了Enter keypress事件:

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

我想我想知道是否有一种简化此代码的方法,因为它相当繁琐,特别是如果有很多处理(你可以创建一个函数,但这又是另一步)并且因为jQuery似乎有大部分内容都被覆盖,我在浏览互联网后感到很惊讶,我找不到更清洁的解决方案。

(上面我担心模仿按钮按下的其他方法,比如打空间,虽然这似乎已被覆盖!)

谢谢!

4 个答案:

答案 0 :(得分: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);
    }
});

答案 1 :(得分:2)

对于按钮元素,空格键和回车键都按下按钮will generate a click event according W3C event specifications。你不应该做任何特殊的处理来处理它。

至于使用$(form).submit(),你可以。只需将按钮更改为隐式提交表单,方法是将其分为push buttons (W3C)

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

然后在你的处理程序中你可以这样做:

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

如果您需要,可以在$(event.target).text()上进行一些处理,以便在必要时使'Decline'为null / emptystring。

答案 2 :(得分:1)

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

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

此方法避免将.click()事件添加到每个按钮,但这可能是您的应用程序的可行选项。

希望这有帮助! 梅森

答案 3 :(得分:1)

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

这样你根本不需要javascript来处理这个......

如果'Accept'按钮是第一个,那么在任何表单字段中按Enter键也会触发那个

样品:

<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>