-1

我有一个输入字段,在它的焦点上应该看到一个注释。

<input type="text" name="contact_email" id="contact_email" onfocus="craateUserJsObject.showContactEmailNote();"/>
<div id="contact_email_note" class="info_box">Contact email note</div>

jQuery代码是:

showContactEmailNote : function () {
                    var ContactEmail = jQuery('#contact_email');
                    if (typeof ContactEmail.focus(function()
                        {
                           {
                               $("#contact_email_note").show("slow");
                           }
                        }
                    ));
                    if (typeof ContactEmail.focusout(function()
                        {
                           {
                               $("#contact_email_note").hide("slow");
                           }
                        }
                    ));

                 }

问题是 onfocus 事件仅在第二次单击输入字段后加载注释。onclick 事件也是如此。它如何加载到该领域的第一个焦点上?

谢谢,杜桑

4

3 回答 3

1

用这个...

$('#contact_email').on('focus blur', function(){
    $("#contact_email_note").toggle("slow");
});

看看这个演示

于 2013-03-08T15:25:48.740 回答
1

您应该使用更简单的代码,例如:

jQuery

$('#contact_email').focusin(function() {
    $("#contact_email_note").show("slow");
}).focusout( function() {
    $("#contact_email_note").hide("slow");
});

请参阅工作小提琴演示

编辑以仅显示一次注释

var noteHasBeenShown = false;
$('#contact_email').focusin(function() {
    if(!noteHasBeenShown) {
        $("#contact_email_note").show("slow");
        noteHasBeenShown = true;
    }
}).focusout( function() {
    $("#contact_email_note").hide("slow");
});

编辑以显示注释并且不隐藏它

$('#contact_email').focusin(function() {
    $("#contact_email_note").show("slow");
});
于 2013-03-08T15:25:53.547 回答
1

如果你试图发现一个事件的类型,你应该使用对象type的属性event,你在滥用typeof操作符,一个简单的事件监听器就可以了。

$('#contact_email').on('focus blur', function(event){
    $("#contact_email_note").toggle(event.type === 'focus');
})
于 2013-03-08T15:26:35.280 回答