我有那个文本字段:
<input type='text' id='title' name='title'>
<div id='error' class='error'></div>
当用户点击文本字段外并且存在验证问题时,会出现 div“错误”。
我想要做的是在用户点击 body 的任何地方时隐藏那个小 div。 我在 body 点击事件中尝试了 e.stopPropagation,但没有成功。
div 从未出现,因为当我模糊文本字段时,它被认为是正文点击
如果您有任何想法,请告诉我。问候
编辑: 我已经更新了代码。 body click 事件中的代码应该在单击文本字段以外的任何内容时隐藏“错误”div,但无法使其正常工作。
$('body').click(function(event){
if ($(event.target).closest('#title').get(0) == null ) {
$("#error").hide();
}});
// Validation
$('#title').blur(function(){
var titleinput=$('#title').val();
if (titleinput.length <30 || titleinput.length >50){
$('#error').text('Your title must be between 30 and 50 characters').show();
}
});
最佳答案
不幸的是,由于 blur
和 click
是不同的事件,您不能使用 stopPropagation
。我能想到的唯一方法就是伪造它。您可以忽略 blur
事件后几分之一秒内发生的第一次点击。
var ignoreClicks = false;
var timer;
$("body").click(function() {
if(!ignoreClicks){
$("#msg").fadeOut();
}else{
if(timer) clearTimeout(timer);
ignoreClicks = false;
}
});
$("input").blur(function(e) {
ignoreClicks = true;
$("#msg").stop(true,true).show();
if(timer) clearTimeout(timer);
timer = setTimeout(function(){ignoreClicks=false;}, 250);
});
关于javascript - 我的 body 点击事件有什么问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10145777/