jquery - 在事件上添加事件处理程序,该事件将另一个事件作为参数

时间:2014-08-30 23:51:20

标签: javascript jquery

我在点击输入按钮时尝试调用函数scheduleAdd,但是我只希望它在id为" addSchedule'的输入时工作。是焦点。这就是我所拥有的:

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

我知道.focus中的代码可以正常工作,因为我自己尝试了它,并在命中回车键时触发函数scheduleAdd。我怎样才能以“addSchedule'成为焦点?

另外,更一般地说,我想知道是否有标准的方法来根据第二个事件(例如嵌套.on()或其他事件)来归因事件处理程序。

感谢。

2 个答案:

答案 0 :(得分:2)

只是keydown事件,并根据当前元素是否具有指定的id决定做某事或什么都不做:

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

或者,如果您不介意jQuery不够,也可以使用document.activeElement.id === "addSchedule"检查焦点元素的标识。 ; - )

答案 1 :(得分:2)

fiddle

上的演示

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");
     }
 });