2011-05-09 79 views
1

我有一些文本框,我想隱藏,然後顯示在焦點,但它似乎沒有正常工作jQuery的現場聚焦功能問題

,這裏是我的jQuery

$("#txt1").live('focus', function() { 
    $(this).hide(); 
    $("#txt2").show().focus(); 
}); 

$("#txt2").live('blur', function() { 
    if ($(this).attr("value") == "") { 
     $(this).hide(); 
     $("#txt1").show(); 
    } 
}); 

這是我的HTML

<input type="text" id="txt1" value="Test" /> 

<input type="password" style="display:none" id="txt2" /> 

的問題是,在Internet Explorer中按預期live對焦功能無法正常工作。

它把重點放在我的文本框,但不會使我能夠輸入框,除非我再次點擊它。

我有一個例子here on jsFiddle

第一測試是一個這就是問題所在。

我添加在第二個按預期工作,但我需要它使用live函數工作。

任何想法?

+0

解決了這個問題,你不能使用$( 「#TXT1」)。綁定( )同樣有效?不要說這是有效的,只是好奇你爲什麼在這裏使用.live()。代碼運行後創建的元素? bind()也可以工作,我沒有嘗試它。 – Henry 2011-05-09 14:02:11

+0

@Henry我以前從未使用'.bind()' - 我使用'.live()',因爲這些字段在加載時隱藏在服務器端 – 2011-05-09 14:05:11

+0

如果它們只是隱藏,'bind'仍然可以工作。 (因爲它們確實存在) – SLaks 2011-05-09 14:07:22

回答

2

我做這個

function pageLoad() { 

$("#txt1").focus(function() { 
    $(this).hide(); 
    $("#txt2").show().focus(); 
}); 

$("#txt2").blur(function() { 
    if ($(this).attr("value") == "") { 
     $(this).hide(); 
     $("#txt1").show(); 
    } 
}); 

}; 

相反的如果你正在使用IDS有它在document.ready()

1

live不支持focusblur。使用focusinfocusout

+0

,似乎沒有任何區別 - 它在safari中使用focus和blur,但不在IE中 – 2011-05-09 13:58:07