我有一个触发键事件的输入文本字段。输入时,我使用输入值处理一些特定代码。一切都很好。
哈姆勒:
%input#myField{:type => "text"}
JavaScript:
my_field = document.getElementById('myField');
my_field.addEventListener("keypress", function (event) {
if (event.keyCode == 13) {
event.preventDefault();
if (tag_field.value.length != 0) {
console.log(my_field.value);
// Run my specific process with my_field.value
my_field.value = '';
}
}
}, false);
但现在我想在这个输入上添加数据列表。
哈姆勒:
%input#myField{:list => "htmlList", :type => "text"}
%datalist#htmlList
%option{:value => "toto"} toto
%option{:value => "foo"} foo
问题是当我在 datalist 上导航以选择一个项目时,我按了 enter 键。在输入键上,我的侦听器被调用并使用输入的初始值处理我的代码。
在这一步,该字段的值为空。之后,该值将替换为在数据列表中选择的值。
所以我的问题是:
有没有办法改变数据列表的行为,用数据列表选择的值替换输入值而不按回车键?(禁用数据列表的输入键)
有没有办法检测数据列表何时处于活动状态(或可见)以处理我的 EventListener 中的不同行为?