簡體   English   中英

jQuery-在將另一個事件作為參數的事件上添加事件處理程序

[英]jquery - add event handler on event that takes another event as argument

我試圖在按下回車按鈕時調用函數scheduleAdd,但是我只希望它在ID為'addSchedule'的輸入中處於焦點時起作用。 這是我所擁有的:

    $('#addSchedule').focus(function(e) {
    var evt = e || window.event;  
    if(evt.keyCode == 13) {scheduleAdd};
 });

我知道.focus內部的代碼有效,因為我自己嘗試了它,並且在按下Enter鍵時會觸發函數scheduleAdd。 如何以“ addSchedule”為關注焦點呢?

而且,更籠統地說,我想知道是否存在一種標准的方法來將事件處理程序歸於第二個事件,例如嵌套.on()之類的東西。

謝謝。

只需keydown事件,然后根據當前元素是否具有指定的ID來決定什么都不做:

$(document).on("keydown", function() {
    if (!$("#addSchedule").is(":focus")) return;
    // do stuff
});

另外,如果您不介意jQuery不夠用,還可以使用document.activeElement.id === "addSchedule"檢查焦點元素的身份。 ;-)

小提琴上的演示

HTML:

<form>
  <input id="addSchedule" type="text" />
</form>

Javascript:

 $('#addSchedule').keydown(function (event) {
     if (event.which == 13) {
         event.preventDefault();    // This will prevent the page refresh.
         scheduleAdd();
     }
     function scheduleAdd() {
         alert("Add the schedule");
     }
 });

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM