2016-05-07 6 views
0

jquery ajax検索を実行し、データリストオプションでレスポンスを出力するようになりました。データリストのオプションをクリックするとイベントがトリガされます。これらのオプションは、 ajaxコール、入力フィールドに何かを書くと、オプションの値が表示されますが、クリックすると警告ボックスを表示します。次のコードを試してみましたが、動作していない、エラーを出さず、イベントをトリガーしていないというコードです。jqueryクリックがデータリストのオプションでトリガされていない

答えて

0

私はdatalist要素は任意のイベントがあり、私は考えることができる最高のテキストフィールドにinputをフックするとは思いません。ただし、datalistからの選択肢をクリックするだけでなく、すべての変更に対応できます。あなたのコメントから

$(document).ready(function() { 
 
    $(document).on("input", "input[type=text]", function() { 
 
    log("got input '" + this.value + "'"); 
 
    }); 
 
}); 
 
function log(msg) { 
 
    $("<p>").text(msg).appendTo(document.body); 
 
}
<input type="text" name="search" class="form-control search" list="res"> 
 
<datalist id="res"> 
 
    <option class="res-opt">Mark</option> 
 
    <option class="res-opt">Stewart</option> 
 
</datalist> 
 
<script src=" https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js "></script>

:私が欲しいもの

が唯一のデータリスト

のオプションをクリックし上の任意のイベントをトリガすることである私が考えることはできませんそれを行うための方法のいずれか。私たちできる行うには、ハンドラをトリガされた場合にのみ、入力の値がdatalistオプションのいずれかと一致inputイベントが発生します:

$(document).ready(function() { 
 
    var listOptions = $("#res option").map(function() { 
 
    return this.value; 
 
    }).get(); 
 
    $(document).on("input", "input[type=text]", function() { 
 
    if (listOptions.indexOf(this.value) != -1) { 
 
     log("Got option '" + this.value + "'"); 
 
    } 
 
    }); 
 
}); 
 
function log(msg) { 
 
    $("<p>").text(msg).appendTo(document.body); 
 
}
<input type="text" name="search" class="form-control search" list="res"> 
 
<datalist id="res"> 
 
    <option class="res-opt">Mark</option> 
 
    <option class="res-opt">Stewart</option> 
 
</datalist> 
 
<script src=" https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js "></script>

の、ではありませんもちろん、まったく同じことですが、あなたと同じくらい近くにいると思います。

+0

@ mastermind:心配しないで、答えはどちらかといえば間違っていました。私は今それを修正しました。 –

+0

私はすでに入力キーアップでAJAXリクエストを送信しています。希望するのは、datalistのオプションだけをクリックしてイベントをトリガーすることです。 –

+0

@ mastermind:これを行う方法をすぐに考えることはできません。ドロップダウンは実際にDOMにはありません。私は考えることができる最も近い答えを更新しました。 –

関連する問題