Javascript 如何使onblur事件在特殊div中不起作用
我有一个Javascript 如何使onblur事件在特殊div中不起作用,javascript,jquery,Javascript,Jquery,我有一个文本框和一个包含城市名称的文本框 单击div的内容,我会用相应的城市名称填充文本框,这很有效 当文本框失去焦点时,我还需要发出警报。为此,我使用了onblur事件 问题是,当用户单击其中一个城市名称时,此onblur事件也会触发,但不应触发 仅当模糊事件不是由单击其中一个引起时,我可以如何触发警报 功能点击{ $(s).最近(“.search_div”).find(“.country”).val($(s).find(.txtcountry”).text()) $(s).最近(“.sea
文本框和一个
包含城市名称的文本框
单击div的内容,我会用相应的城市名称填充文本框,这很有效
当
文本框失去焦点时,我还需要发出警报。为此,我使用了onblur
事件
问题是,当用户单击其中一个城市名称时,此onblur
事件也会触发,但不应触发
仅当模糊事件不是由单击其中一个
引起时,我可以如何触发警报
功能点击{
$(s).最近(“.search_div”).find(“.country”).val($(s).find(.txtcountry”).text())
$(s).最近(“.search\u div”).find(“.co id”).val($(s).find(“.countryid”).val())
$(s).最近(“.search_div”).find(“.co”).empty();
}
$('.country')。每个(函数(){
$(this).on('blur',function(){
警报(“你好”)
});
});代码>
土耳其安卡拉
土耳其伊斯坦布尔
尝试下一个脚本:
function OnBlur() {
if (!$('.co').data('clicked')) {
alert("hello");
}
}
$(document).ready(function() {
$('.co').click(function() {
$('.co').data('clicked', true);
});
$('.country').click(function() {
$('.co').data('clicked', false);
});
$('.country').on('blur',function() {
setTimeout(OnBlur, 500);
});
});
仅仅为.co单击设置一个处理程序没有帮助,因为模糊首先触发。因此,应该使用setTimeout()。此外,还应添加$('.country')。单击()处理程序可每次刷新数据。尝试下一个脚本:
function OnBlur() {
if (!$('.co').data('clicked')) {
alert("hello");
}
}
$(document).ready(function() {
$('.co').click(function() {
$('.co').data('clicked', true);
});
$('.country').click(function() {
$('.co').data('clicked', false);
});
$('.country').on('blur',function() {
setTimeout(OnBlur, 500);
});
});
仅仅为.co单击设置一个处理程序没有帮助,因为模糊首先触发。因此,应该使用setTimeout()。您还应该添加$('.country')。单击()处理程序可每次刷新数据。即使没有此技巧,它也能正常工作,因此我认为这取决于浏览器。这里有一个解决方案:
var menuHover=0;
功能点击{
$(s).最近(“.search_div”).find(“.country”).val($(s).find(.txtcountry”).text());
$(s).最近(“.search\u div”).find(“.co id”).val($(s).find(.countryid”).val());
$(s).最近(“.search_div”).find(“.co”).empty();
menuHover=0;
}
$('.selectCountry')。在({
mousedown:function(){
menuHover=1;
},
单击:函数(){
menuHover=1;
},
mouseleave:function(){
menuHover=0;
}
});
$('.country')。每个(函数(){
$(this).on('blur',function(){
如果(menuHover==0){
警惕(“你好”);
}
});
});代码>
土耳其安卡拉
土耳其伊斯坦布尔
即使没有这个技巧,它也能工作,所以我认为这取决于浏览器。这里有一个解决方案:
var menuHover=0;
功能点击{
$(s).最近(“.search_div”).find(“.country”).val($(s).find(.txtcountry”).text());
$(s).最近(“.search\u div”).find(“.co id”).val($(s).find(.countryid”).val());
$(s).最近(“.search_div”).find(“.co”).empty();
menuHover=0;
}
$('.selectCountry')。在({
mousedown:function(){
menuHover=1;
},
单击:函数(){
menuHover=1;
},
mouseleave:function(){
menuHover=0;
}
});
$('.country')。每个(函数(){
$(this).on('blur',function(){
如果(menuHover==0){
警惕(“你好”);
}
});
});代码>
土耳其安卡拉
土耳其伊斯坦布尔
您确定代码正确吗?由于它对meth工作正常,所以问题不清楚&共享的代码与requirement@inaz即使如此,我也无法复制这个问题。。。。然而,我创造了一把相同的小提琴。。。。。。。。看看吧,告诉我们,这个问题还在这把小提琴里吗?@kaido我没听你的评论。设置两个计时器是什么意思?@Pedram你说得对,我的辩护是,我在进行编辑时不得不重新加载4次页面,因为以前的编辑都没有费劲去真正解决这个问题。你确定代码正确吗?由于它对meth工作正常,所以问题不清楚&共享的代码与requirement@inaz即使如此,我也无法复制这个问题。。。。然而,我创造了一把相同的小提琴。。。。。。。。看看吧,告诉我们,这个问题还在这把小提琴里吗?@kaido我没听你的评论。设置两个计时器是什么意思?@Pedram你说得对,我辩护说,我在编辑时不得不重新加载4次页面,因为之前的编辑都没有费劲去真正解决这个问题。非常感谢。非常感谢。