1

我最近开始使用 Javascript,发现我的 password.length 检查存在一个问题。
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 之后输入的数据,但似乎并非如此。
发生的事情是它自动填写了五个 *,这破坏了我的 Javascript。它的长度是5,如果我在框内单击,ctrl + a(标记五个*),然后写一个字母(没有退格,只是替换),它仍然是白色的。它的长度现在是 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.

谢谢!
*还有一个问题,为什么在变成蓝色(然后又变成白色)后顶部有灰色边框?

4

2 回答 2

1

修复它的一种简单方法是使用keyupevent 而不是keypress.

因为keypress在值变化之前keyup触发,而在它之后触发。

于 2013-02-03T01:30:47.063 回答
0

Last Question: Browsers have their own default styling. If you want to remove the outline with this CSS.

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