javascript - 我的 body 点击事件有什么问题?

标签 javascript jquery

我有那个文本字段:

<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();
        }
    });

最佳答案

不幸的是,由于 blurclick 是不同的事件,您不能使用 stopPropagation。我能想到的唯一方法就是伪造它。您可以忽略 blur 事件后几分之一秒内发生的第一次点击。

http://jsfiddle.net/LeNDp/1

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/

相关文章:

javascript - jquery:目标div包含超过2个单词

javascript - 如何将 Token 保存到本地存储?

javascript - 如何将事件附加到新创建的对象

php - 在 javascript 中解析来自 php 的 json 时出现奇怪的行为

javascript - Filterizr,在初始负载上应用过滤器

javascript - 更改数组对象属性然后保存回本地存储?

jquery - asp.net 4 Visual Studio 2010 jquery 母版页不工作

javascript - map 服务器提供的 WMS 层在 ol3 中渲染不正确

javascript - 数据表上的行分组和小计

javascript - 我怎样才能摆脱在函数之前放置 "new"