我现在拥有的内容:
所以我有这个HTML5 Datalist,里面有很多选项,我有2个事件被触发。一个当用户键入一些匹配某些名称的东西时,这些名称填充了诸如“Rick Bross”或“Jack Johnson”(keyup)之类的选项。当用户开始键入名称时会触发另一个事件,它会弹出,用户向下箭头,然后点击“输入”(更改)。
问题:
当用户点击其中一个下拉选项时,在输入全名之前,以及在对象模糊之前,我需要触发一个事件。如果用户在名称完全输入之前立即单击一个,则只有输入模糊后,2个事件才会触发该功能。
标记:
<datalist id="potentials">
<option value="Rick Bross">
<option value="Jack Johnson">
<option value="Rick Bross">
<option value="Rick Bross">
</datalist>
Javascript事件和功能:
window.checkModelData = function(ele)
{
var name = $(ele).val().replace(" ", "");
var mod = potentialModels[name];
if(mod) {
loadModelData(name);
}
}
function loadModelData(name) {
var mod = potentialModels[name];
$("#address").val(potentialModels[name].address);
$("#city").val(potentialModels[name].city);
$("#state").val(potentialModels[name].state);
$("#email").val(potentialModels[name].email);
$("#phone").val(potentialModels[name].phone);
$("#zip").val(potentialModels[name].zip);
}
$("#name").keyup(function(){
window.checkModelData(this);
});
$("#name").change(function(){
window.checkModelData(this);
});
答案 0 :(得分:18)
使用input
事件代替其他事件。它实际上是为了满足您的需求而设计的:
$("#name").bind('input', function () {
window.checkModelData(this);
});
我为你做了jsfiddle尝试。
答案 1 :(得分:0)
您还可以在输入字段上收听“选择”事件。
$('#name').bind('select', function() {
// handle input value change
});
答案 2 :(得分:-1)
此处处理单击事件是解决方案。
$("#book_search").bind('select', function () {
alert("changed");
});