2012-06-20 214 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

相關問題