2013-02-03 52 views
1

我最近开始使用Javascript,并且发现了一个与我的password.length检查有关的问题。
http://jsfiddle.net/uYss7/ 代码:
Javascript阻止自动完成

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. 

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

回答

1

一个简单的方法来解决它是使用keyup事件,而不是keypress

由于keypress在值更改前触发,而keyup之后触发。

+0

这是解决方案:)谢谢,我添加到我的帖子 –

0

最后一个问题: 浏览器有自己的默认样式。如果你想删除这个CSS的轮廓。

input:focus { 
    outline: none; 
} 
+0

这并没有解决它;它在Javascript启动时获得边框,这在setStyle之前没有问题 –