我的身体点击事件有什么问题?

时间:2012-04-13 17:50:34

标签: javascript jquery

我有那个文字字段:

<input type='text' id='title' name='title'>
<div id='error' class='error'></div>

当用户点击文本字段并且存在验证问题时,会出现div“错误”。

我想要做的是当用户点击身体的任何地方时隐藏那个小div。 我在身体点击事件中尝试了e.stopPropagation,但没有效果。

div永远不会出现,因为当我模糊文本区域时,它被认为是一个身体点击

如果您有任何想法,请告诉我。此致

编辑: 我已经更新了代码。当单击文本字段时,除了文本字段之外的任何内容,身体单击事件中的代码应该隐藏“错误”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();
        }
    });

1 个答案:

答案 0 :(得分:3)

很遗憾,由于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);
});​