2013-03-08 45 views
-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事件也是如此。 如何加載該領域的第一焦點?

感謝,杜尚

+2

爲什麼使用if語句附加事件處理程序? – 2013-03-08 15:20:21

+0

''('#form')。on('focus','#contact_email',handler).on('blur','#contact_email',handler);'稍微容易理解。 – 2013-03-08 15:24:46

回答

1

使用此...

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

而且看到這個demo

+0

謝謝你的回答,代碼是正確的,但它仍然在第二個焦點後加載。我究竟做錯了什麼? – 2013-03-08 15:37:06

+0

對於你的代碼,只需將屬性css'display:none;'添加到'contact_email_note',你注意到在第一次點擊時就可以看到,然後css解決它......看例子... – 2013-03-08 15:38:57

1

你應該用更輕鬆的代碼像這樣的:

jQuery的

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

看到工作fiddle demo

編輯顯示的音符只有一次

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"); 
}); 
+0

謝謝你的答案,代碼是正確的,但它仍然在第二個焦點後加載。 – 2013-03-08 15:38:04

+0

啊,你希望它只扔一次,而不是現在呢?我正在編輯.. – soyuka 2013-03-08 15:44:55

+0

@soyuka在你編輯代碼注意只顯示在第一次,在第一次後,注意不再顯示... – 2013-03-08 15:50:08

1

如果你正在試圖發現的類型事件中,你應該使用event對象的type屬性,你正在誤用typeof運算符,一個簡單的事件監聽器會訣竅。

$('#contact_email').on('focus blur', function(event){ 
    $("#contact_email_note").toggle(event.type === 'focus'); 
}) 
+0

謝謝你的回答,代碼是正確的,但它仍然在第二個焦點後加載。我究竟做錯了什麼? – 2013-03-08 15:37:46

+0

@Dušan由於您已將代碼置於'showContactEmailNote'方法的上下文中,請移除'onfocus'屬性並將代碼放入文檔就緒處理程序中。 – undefined 2013-03-08 15:39:52

+0

它在文檔就緒處理程序中工作,但有沒有一種方法來顯示它在onfocus或onclick事件上創建對象,但第一次加載? – 2013-03-08 15:59:43