2013-03-20 86 views
0

我有一個輸入處理,像這樣:指定按鈕提交

$('.submit-on-enter').keydown(function (e) { 
    if (e.keyCode == 13) { 
    var id = $(this).attr('id'); 
    $('input[type=submit][for=' + id + ']').click(); 
    } 
}); 

這是多個按鈕的形式。我遇到的問題是,當表單碰到服務器時,第一個按鈕就在那裏,而不是被點擊的那個。我已經驗證上述處理程序中的id是預期的id。

而且很明顯,我正在檢查按鈕服務器端是否存在name屬性,以確定哪個按鈕被點擊。無論如何,頁面上第一個按鈕的名稱始終存在。

任何想法?

+0

是否所有按鈕都設置爲提交相同的表單?如果是這樣,那可能是你的問題。 – Jack 2013-03-20 15:04:31

+0

@jack:爲什麼我的問題是當物理點擊不會導致相同的行爲? – Fred 2013-03-20 15:06:48

+0

使用e.preventDefault()來防止發送原始的keydown事件 – ITroubs 2013-03-20 15:06:59

回答

0

這是解決方案,請注意事件的變化。 keydown似乎不允許在Chrome中停止表單提交事件。

$('.submit-on-enter').keypress(function (e) { 
    if (e.keyCode == 13) { 
    e.preventDefault(); 
    var id = $(this).attr('id'); 
    var name = $('input[type=submit][for=' + id + ']').attr('name'); 
    $('input[type=submit][for=' + id + ']').click(); 
    } 
});