1

最近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つ質問があります。青に変わった後(そして再び白に変わった後)、上部に灰色の境界線があるのはなぜですか?

4

2 に答える 2

1

これを修正する簡単な方法は、keyupの代わりにイベントを使用することですkeypress

keypress値の変更前にトリガーされ、変更後にトリガーされるためkeyup

于 2013-02-03T01:30:47.063 に答える
0

最後の質問:ブラウザには独自のデフォルトのスタイルがあります。このCSSでアウトラインを削除したい場合。

input:focus {
    outline: none;
}
于 2013-02-03T01:35:30.080 に答える