聚焦时显示警报,仅显示一次

时间:2014-02-05 13:49:32

标签: javascript jquery

我的脚本下面有点问题。我正在尝试创建一个脚本,您可以在输入字段中编写一些文本,当您键入一些文本时,您将在焦点输出时收到警报。如果输入包含文本,则警报应仅显示。

但问题是,如果你试图写一些文字,删除它然后把注意力集中在输入上,下次你不会显示警报,当你实际写了一些东西然后集中注意力时。

现在,无论你是否写过任何东西,警告功能在焦点出现时总会“消失”。

我曾尝试在警告之前添加var already_alert_me_once = true,然后将所有内容放在:if(already_alert_me_once == false)中,但这并不能解决问题。

我还试图用$('#title').focusout(function()更改$('#title').one('focusout', function(),这几乎可以解决问题。

这是我目前的剧本:

// When focus on title


 $('#title').focus(function () {
    // Check if empty
    if (!$(this).val()) {
        $('#title').one('focusout', function () {
            if ($(this).val()) {
                alert("YEP");
            }
        });
    }
});

..和Here's a Fiddle

所以我的问题是;如何执行此操作警报仅在 写入内容时显示,之后再次(除非您重新加载页面)

希望你能理解我的意思。

谢谢--YaXxE

3 个答案:

答案 0 :(得分:3)

您可以使用以下方法解除对焦:

$('#title').unbind('focus');

<强> Working Fiddle

答案 1 :(得分:2)

几乎是最简单的解决方案,不需要.one或焦点事件:)

$('#title').blur(function() {
    if( $(this).val() ) {
        alert('!!');
        $(this).unbind('blur');
    } 
});

http://jsfiddle.net/T7tFd/5/

答案 2 :(得分:0)

而不是将变量“already_alert_me_once”放在函数中,使其成为全局变量。这样就可以保持范围。你也可以在#title中添加一个属性,表明它已被点击,然后在执行代码之前检查该属性是否存在。