我在想要触发的输入上有一个更改事件,除非您单击列表项。基本上我调用一个函数来检查这个字段的变化,但是还有一个自动完成脚本,它在您选择的输入下方添加一个无序列表,当您单击一个项目以填充输入字段时触发更改(本质上是在添加新值之前触发)。这是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);
}
});
}
});
我在那里添加了explicitOriginalTarget,因为它适用于Mozilla 浏览器,但这不是跨浏览器解决方案。我还尝试添加一个变量,当您单击无序列表项时会添加该变量,但它会在 search_input 字段之后触发,因为它在 DOM 之后。
感谢您的帮助。
编辑:
你可以在这里看到一个小例子:http: //jsfiddle.net/DfMYE/5/ 如果你开始输入“test”,你会看到一个下拉菜单,其中包含 2 个选项。当你点击一个时,它会触发 change 事件和 select 事件。如果我们单击选择列表,我想停止更改事件。