昨天在测试的时候发现了一个很怪异的问题.原本的设计逻辑是:当用户修改用户信息的时候.密码一栏默认是空.就表示用户不修改密码.只有密码一栏填写了值的时候后台才会更新密码.在ie和chrome下测试都没有发现问题.但是在在火狐下其他的修改页面.也没有问题.只是其中一个编辑页面出现了问题.就是密码框的位置,没传值.但是还莫名其妙的显示了值.如图:
这是期望的效果:
火狐下的效果是:
部分jsp代码是:
Java代码
- <span$amp;>amp;$nbsp;
- <tr$amp;>amp;$nbsp;
- <td align="right"$amp;>amp;$lt;fmt:message key="admin.user.name.title"/>:</td$amp;>amp;$nbsp;
- <td align="left"$amp;>amp;$lt;input type="text" id="admi_name"
- name="admi_name" value="${adminBean.admi_name}" /$amp;>amp;$lt;/td$amp;>amp;$nbsp;
- </tr$amp;>amp;$nbsp;
- <tr$amp;>amp;$nbsp;
- <td align="right"$amp;>amp;$lt;fmt:message
- key="shop.member.password.title"$amp;>amp;$lt;/fmt:message>:</td$amp;>amp;$nbsp;
- <td align="left"$amp;>amp;$lt;input type="password" id="admi_password"
- class="{rangelength:[6,8]}" name="admi_password" /$amp;>amp;$lt;/td$amp;>amp;$nbsp;
- </tr$amp;>amp;$nbsp;
- <tr$amp;>amp;$nbsp;
- <td align="right"$amp;>amp;$lt;fmt:message
- key="shonfirm.title"$amp;>amp;$lt;/fmt:message>:</td$amp;>amp;$nbsp;
- <td align="left"$amp;>amp;$lt;input type="password"
- name="admi_password_confirm"
- class="{equalTo:'#admi_password'}" /$amp;>amp;$lt;/td$amp;>amp;$nbsp;
- </tr$amp;>amp;$lt;/span$amp;>amp;$nbsp;
并且保证不是js的问题.
经过测试.其他浏览器没有问题.发现火狐下别的页面也没有问题.就这个页面有问题.所以我就坚信是jsp页面的问题.经过百般的测试,发现了一点线索.就是当密码框上面的管理员姓名为空时,是不会有问题的,只有管理员姓名有值时,才会将紧挨着他的下一个密码框赋值.
我思想向后不明所以.很明显,后台框架是影响不到前台的.jsp里面的js我也都删除过.但是还是有这种问题.当我最终打算放弃,打算在iteye上逛一会的时候.在我登录iteye的时候(我这回是用的firefox,我正常情况下,不测试是不用firefox的,一般都是chrome.因为今天一直在用firefox测试,顺手就用了.)输入完密码点登录的时候,火狐弹出了提示框:是否记住密码
当我看到这几个字眼的时候,灵光一闪.我上面的问题.是不是firefox的自动保存密码功能搞的鬼那 经过测试.发现确实是这个可恶的东东搞的鬼(说可恶,有点不合适,毕竟保存密码这个功能还是很方便的).
解决方案:
我刚发现这个问题的原因的时候,感觉没有一举两得的好办法,既想用密码保存功能,又想指定的字段不要自动填充密码.我半信半疑的打开"网页制作完全手册"查看input type=password 的属性.找了半天没发现和这个问题有关的属性.最后抱着试一试的态度,给管理员姓名字段加上的:autocomplete=off属性,就是关闭了它的自动提示功能.没想到奇迹就这么发生了!.
特此将这种怪异的问题记录下来,希望其他的同学别再为这个问题痛疼.!