2011-10-07 36 views
1

請看看這個: http://jsfiddle.net/sduBQ/1/如何綁定到瀏覽器輸入字段的更改? (jQuery的)

HTML:

<form action="login.php" method="post" id="login-form"> 
    <div class="field"> 
     <input name="email" id="email" type="text" class="text-input" value="E-mail" /> 
    </div> 

    <div class="field"> 
     <input name="code" id="code" type="password" class="text-input" /> 
     <div id='codetip'>Access Code</div> 
     <label class="error" for="code" id="code_error"></label> 
    </div> 
    <br /> 
    <div class="container"> 
     <a id="submit" class="link-2">Access</a> 
    </div> 
</form> 

CSS:

a { 
    border: solid 1px #777; 
    padding:5px; 
} 
#codetip { 
    position:absolute; 
    margin-top:-20px; 
    margin-left:5px; 
} 

的Javascript:

$('#email').focus(function(){ 
    if($(this).val()=='E-mail'){$(this).val('');} 
}); 
$('#email').blur(function(){ 
    if($(this).val()==''){$(this).val('E-mail');} 
}); 

$('#code').focus(function(){ 
    $('#codetip').hide(); 
}); 
$('#code').blur(function(){ 
    if($(this).val()==''){$('#codetip').show();} 
}); 

$('#codetip').click(function(){ 
    $(this).hide(); 
    $('#code').focus(); 
}); 

$('#submit').click(function(){ 
    $(this).submit(); 
}); 

的問題是,在至少在Chrome中(沒有trie d其他瀏覽器),當Chrome密碼管理器保存您的密碼並在您選擇電子郵件時爲您預先填寫密碼。我使用jQuery來隱藏/顯示密碼輸入字段頂部的div作爲標籤,當用戶單擊密碼字段時隱藏該div(如上面的jsfiddle代碼所示)。我需要知道如何在Chrome預填充密碼字段時隱藏該div ...

+0

您是否檢查過預填充字段時是否觸發'change'事件? – RoToRa

+0

是的,我已經檢查過,並且它不是 –

+0

或者如果填充了字段,或者檢查文檔是否準備好(或者如果需要,還是窗口加載)? – RoToRa

回答

2

我自己沒有遇到過這個問題,但它似乎是一個常見問題,基於幾個快速Google搜索。

一個簡單的黑客,你可以做的是建立運行每隔一兩秒鐘通過setInterval,並檢查是否領域擁有價值一些代碼。

事情是這樣的......

var code = $('#code'); 
var codeTip = $('#codetip'); 
var interval = setInterval(function(){ 
    if (code.val()!=''){ 
     codeTip.hide(); 
     clearInterval(interval); 
    } 
}, 1000); 
+0

是的,我知道關於Interval並且等待缺少一種非哈希方法來做到這一點,我會選擇你的答案,但我希望有一個非hacky的方式來做到這一點 –

+0

我找到了.bind上的東西'DOMAutoComplete'在你給出的鏈接中,但它沒有工作,所以我使用hacky版本。謝謝你的幫助。 –

0

我有同樣的問題。我發現的解決方案都不夠好。我結束了這個:

如果沒關係你的輸入字段有背景,我只是在CSS中處理它。

jsfiddle

我只是給了.inputPlaceholder { z-index: -1; },使其輸入字段後面對準,然後設置input { background: transparent; }所以你可以看到它背後的股利。

谷歌的默認-webkit-autofill風格有一個黃色的背景,所以只是掩蓋你的佔位符。不需要搞亂自定義插件/事件/ setIntervals。

相關問題