2013-03-21 73 views
1

我按下輸入按鈕時正在執行按鍵提交。我做了一個jQuery插件,我需要一些幫助:檢索按鍵事件

jQuery.fn.enterPress = function(obj, button) {   
      if (e.which == 13) { 
       jQuery(button).click(); 

      }   
    }; 

在這個函數中,我找回OBJ(HTML格式),以及按鈕(一個被點擊)。

我不確定,但我可能不需要這個「obj」。 我的問題是我沒有這個'e'。我嘗試了很多方法,但我不知道該如何回覆它。

我有此:

jQuery('#' + obj.id).keypress(function(e) {} 

但功能被解僱了兩次,有時三次。

感謝

+0

的jQuery已經有一個'keypress'方法,你可以只用它。你有沒有理由開發自己的? – Uby 2013-03-21 15:09:33

+0

其實,我想要更一般的東西。像傳遞屬性(在我的情況下,按鈕ID – 2013-03-21 15:20:17

回答

1

的jQuery有一個內置的這個所謂的按鍵方法。

$("#target").keypress(function(event) { 
    if (event.which == 13) { 
    event.preventDefault(); 
    // do stuff here 
    } 
} 

如果你想添加一個更通用的方法爲「進入」按鍵事件綁定到一個jQuery對象,然後點擊一個按鈕(如你在你的問題和評論中提及了),你可以做這樣的事情:

var $button = jQuery('#somebutton'); 

jQuery.fn.enterPress = function(callback) { 
    jQuery(this).keypress(function(event) { 
     if (event.which == 13) { 
      event.preventDefault(); 
      callback(); 
     } 
    }); 
}; 

$button.click(function(){ 
    alert('button was clicked'); 
}) 

jQuery('#target').enterPress(function() { 
    // what you want to happen after enter is pressed 
    $button.click(); 
}); 

Working Example

+0

你好@Cody,我試過你的答案,防止默認沒有工作,他按鈕沒有被點擊 也,我試着isPreventDefault(),總是來'假'。我試着e.stopPropagation(),它的工作原理,但只在第二次輸入時觸發(如果頁面加載焦點在字段中,我按回車鍵) 我把一個警報裏面的JQuery。 fn.enterPress並且總是被解僱,但obj.keypress ...只在第二次打中 – 2013-03-21 16:01:52

+0

嘿@viictoorh,我已經更新了我的答案以及一個工作示例:http://jsfiddle.net/XNKsq/ – 2013-03-21 16:47:43

+0

Thanks @科迪,它的工作,我只是對我的建議做一些修改。 – 2013-03-21 17:15:58

0

此代碼發送表單時,點擊「13鍵代碼」 ==「輸入」

$(document).ready(function(e){ 
    $(document).keypress(function(e){ 
     if(e.keyCode == 13) 
      $("#myFOrm").submit(); 
    }); 
}); 
0

return鍵已經被綁定到提交HTML表單,但這裏是你如何監聽使用各種方法按鍵事件呢:

常規JavaScript:

document.getElementById('yourFormId').addEventListener('keypress', function(e) { 
    if(e.keyCode === 13) 
     document.getElementById('yourButtonId').click(); 
}, false); 

此外常規的JavaScript:

document.getElementById('yourFormId').onkeypress = function(event) { 
    if(event.keyCode === 13) 
     document.getElementById('yourButtonId').click(); 
}; 

或者jQuery的:

$('yourFormId').keypress(function(event) { 
    if(event.which === 13) 
     $('yourButtonId').trigger('click'); 
});