13

私はこの例を持っています:

<datalist id="browsers">
  <option value="Internet Explorer">
  <option value="Firefox">
  <option value="Google Chrome">
  <option value="Opera">
  <option value="Safari">
</datalist>

ユーザーがオプション(マウスまたはキーボードを使用)を選択したときに、イベントをキャッチする必要があります。

やろうとしましたがonchange="MySuperFunction();"、これはアイテムが選択され、リストがフォーカスされていない場合にのみ機能します。

4

3 に答える 3

18

inputイベントはあなたが必要とするもののために働くはずです。私が理解しているように、データリストを直接使用することはできませんが、list属性によって入力に接続されています。このイベントバインディングは、その入力に適用されます。

document.getElementById('browsers-input').addEventListener('input', function (event) {
   if (event.inputType == 'insertReplacementText')
       console.log('autocomplete option selected'); 
});

http://jsfiddle.net/vccfv/

于 2013-02-28T23:51:01.543 に答える
2

JQueryスタイルを使用して「ExplosionPills」ソリューションと同じ効果を得るには:

$("#browsers-input").on("input", MySuperFunction);
于 2015-04-22T12:49:25.730 に答える
1

http://jquery.com/jQueryを使用でき.change ます

$('datalist#browsers').change(MySuperFunction);

また

$('datalist#browsers').change(function(){
  // stuff
});
于 2013-02-28T23:36:33.900 に答える