Datalist:检测是否通过单击项目或按下的键启动了事件输入

时间:2015-10-01 09:38:37

标签: javascript jquery javascript-events event-handling



 $("#football_players").bind('input', function (ev) {
                alert("I want to know what is event launcher");
});

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

  <datalist id="datalist_football_players">
    <option value="Maradona" />
    <option value="Pele" />
    <option value="Platini" />
    <option value="Cruif" />
    <option value="Messie" />
</datalist>
<input id="football_players" list="datalist_football_players" />
&#13;
&#13;
&#13;

我有一个datalist用于对输入文本进行自动提示,我想知道何时点击了该Datalist的一个项目,我可以通过这样的事件输入来完成:

HTML:

 <datalist id="datalist_football_players">
      <option value="Maradona" />
      <option value="Pele" />
      <option value="Platini" />
      <option value="Cruif" />
      <option value="Messie" />
</datalist>

<input id="football_players" list="datalist_football_players" />

JS:

$("#football_players").bind('input', function (ev) {
    console.log("input event has been launched by click or by key press??");
});

不幸的是,按键已经启动了事件输入,我无法知道clik或按键是否已启动事件输入

你知道一种确定的方法吗?如果有的话,知道按键的方法是什么?

1 个答案:

答案 0 :(得分:3)

您可以通过在适当的目标上绑定适当的事件来检查事件。 当文本框具有某些类型值然后单击完成时,也会触发退格键控事件

所以请尝试关注 -

var eventKey=null;
$("#football_players").bind('keydown', function (ev) {
 eventKey=ev.which;
});
$("#football_players").bind('input', function (ev) {
    if(eventKey==null || (""==$(this).val() && eventKey==8 ))
    console.log("click");
    else
    console.log("key pressed"+eventKey);

    eventKey=null;
});

LIVE http://jsfiddle.net/mailmerohit5/q9dy5xL0/