2016-07-07 110 views
0

我使用這兩個幾乎相同的函數來捕獲輸入字段中的按鍵事件,並清除其中的標籤。但出於某種原因,我輸入的第一個字母不會出現在密碼字段中,而出現在用戶名字段中。這可能是什麼原因?輸入字段上缺少第一個字母

$("#username").keypress(function() 
{ 
    if($(this).hasClass("label")) 
    { 
    $(this).removeClass("label"); 
    $(this).val(""); 
    } 
}); 

$("#password").keypress(function() 
{ 
    if($(this).hasClass("label")) 
    { 
    $(this).removeClass("label"); 
    $(this).prop("type", "password"); 
    $(this).val(""); 
    } 
}); 

見這裏的例子:https://jsfiddle.net/c0qdj1u3/

+2

對我來說很好Chrome ... Windows – DaniP

+0

這似乎是一個瀏覽器問題。 –

+0

在OS X上運行良好的Chrome –

回答

0

下面的行導致錯誤:

$(this).prop("type", "password"); 

如果你開始的類型爲密碼,它工作正常。而不是設置值,請使用佔位符。請看下圖:

<input type="text" placeholder="Username" class="label" id="username"><br> 
<input type="password" placeholder="Password" class="label" id="password"> 

$("#username").keypress(function() 
{ 
    if($(this).hasClass("label")) 
    { 
    $(this).removeClass("label"); 
    $(this).val(""); 
    } 
}); 

$("#password").keypress(function() 
{ 
    if($(this).hasClass("label")) 
    { 
    $(this).removeClass("label"); 
    $(this).val(""); 
    } 
}); 

如果你必須在任何打字之前的文本框中某個值,請嘗試使用jQuery的佔位符插件。 https://github.com/mathiasbynens/jquery-placeholder

+0

是的,我知道這條線是它造成的,但爲什麼?我不想使用佔位符,因爲IE9顯然不支持它。你能提出一種解決方法嗎? –

+0

您需要提前發佈文字嗎? –

+0

是的,因爲它是輸入字段標籤。我也不想爲這樣簡單的事情使用任何插件。 –

相關問題