リスト項目をクリックしたとき以外にトリガーしたい入力に変更イベントがあります。基本的には、変更されたときにこのフィールドをチェックする関数を呼び出しますが、選択した入力のすぐ下に順序付けられていないリストを追加するオートコンプリート スクリプトもあり、項目をクリックして入力フィールドに入力すると変更がトリガーされます(基本的に、新しい値が追加される前にトリガーされます)。JavaScriptコードは次のとおりです。
document.observe('dom:loaded',function() {
new Ajax.Autocompleter("search_input", "found_input", "someurl.jsp", {
afterUpdateElement: updateSelectedItem,
minChars: 2
});
if ($('search_input') != undefined) {
$('search_input').observe('change', function(e, el) {
if (e.explicitOriginalTarget.up(1) != undefined && e.explicitOriginalTarget.up(1).id != "found_input") {
checkFunction(this.value);
}
});
}
});
Mozilla ブラウザで動作するので、そこに explicitOriginalTarget を追加しましたが、これはクロス ブラウザ ソリューションではありません。また、順序付けられていないリスト項目をクリックすると追加される変数を追加しようとしましたが、DOM では search_input フィールドの後にトリガーされます。
助けてくれてありがとう。
編集:
ここでちょっとした例を見ることができます: http://jsfiddle.net/DfMYE/5/ 「test」と入力し始めると、2 つのオプションのドロップダウンが表示されます。いずれかをクリックすると、change イベントと select イベントがトリガーされます。選択リストをクリックすると、変更イベントを停止したいと思います。