我正在使用bootstrap typeahead。当用户在表单中输入地址时,会显示包含可能地址的下拉列表。当他们选择一个时,我添加一个隐藏的输入字段,其中包含数据库中地址的id。
现在,当用户从输入字段中删除文本时,该地址已不再有效,因此我想删除该隐藏的输入字段。问题是如何检测用户何时使用删除键或使用鼠标从输入字段中删除文本。
我已经尝试过按键事件,使用删除键时它不起作用:
var input_changed = false
$('#myid').bind('typeahead:selected', function(obj, datum, name) {
$.ajax({
url: "/lead_profiles/populate_address",
data: {
address : datum
}
// dataType: "script"
}).done(function(data){
var contact = JSON.parse(data)[0];
var $parent = $("#myid").closest(".form-group");
$parent.after('<input name="lead_profile[contact_attributes][id]" type="hidden" value="' + contact.id + '">')
input_changed = true
});
});
$("#myid").on('keypress', function(){
if(input_changed){
alert("Input has changed");
}
})
除了按键之外我还需要另一个事件来确定文本是否已从输入字段中删除。
答案 0 :(得分:2)
您可以使用oninput事件:{'keyup paste'用于不支持它的旧浏览器}
$("#myid").on('input', function(){
if(input_changed){
alert("Input has changed");
}
});