最近Javascriptを使い始めましたが、password.lengthチェックに1つの問題が見つかりました。
http://jsfiddle.net/uYss7/
コード:
document.observe('dom:loaded', function() {
$('passwordan').observe('keypress', function(event) {
if (this.value.length < 5) {
this.setStyle({backgroundColor: 'blue'});
} else {
this.setStyle({backgroundColor: 'white'});
}
});
});
問題:
自動的に情報が入力されます。私は127.0.0.1を使用していますが、ボックスが「passwordan」である理由は、Firefoxがボックス名またはIDの後に以前に入力されたデータを記憶しているかどうかを確認したかったためですが、そうではないようです。
何が起こるかというと、それは自動的に5つの*を埋め、これは私のJavascriptを壊します。その長さは5で、ボックス内でctrl + a(5つの*をマーク)をクリックして文字を書くと(バックスペースなしで、置き換えるだけ)、まだ白です。長さは1になり、青色になっているはずです(長さが5未満であるため)。マークを付け、バックスペースをクリックして文字を書くと、想定どおりに機能します。
説明する画像は次のとおりです。http:
//makeagif.com/media/2-02-2013/pc1TSL.gif
*
pktangyueは私に修正を与えました:
A simple way to fix it is using keyup event instead of keypress. Because keypress triggered before value change, while keyup triggered after it.
ありがとう!
*そしてもう1つ質問があります。青に変わった後(そして再び白に変わった後)、上部に灰色の境界線があるのはなぜですか?