Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/384.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使onblur事件在特殊div中不起作用_Javascript_Jquery - Fatal编程技术网

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次页面,因为之前的编辑都没有费劲去真正解决这个问题。非常感谢。非常感谢。