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