注
:针对的是chrome,IE 对autocomlete属性不生效
在项目中,时常需要进行表单提交,当我们填完表单后,在没有点击保存按钮或者提交按钮时,点了以下logo,页面跳回了首页,这时,我们通过浏览器的前进后退按钮,可以返回到之前填写表单页面,这时,会将之前选中或者填写的值显示出来,但我们的页面出现了值赋值错乱的问题,A的值赋给了B这种现象。这是什么原因造成的?
经过一番定位,我们找到了原因。浏览器在使用前进后退功能时,之所以会记住之前的值,是因为浏览器对
input
的
autocomplete
属性默认是开启的,所以会记住,当我们回退到之前的页面时,
autocomplete
记住的值会进行回填,回填的依据就是input标签上的name属性,会根据
name
属性性回显之前填的值,如果没有配置
name
属性,则会出现赋值错乱的问题,有的值会赋值给前一个字段。
input
属性配置
name
属性
autocomplete
设置为
off
代码如下:
<input type='text' name='userName' id='userName' autocomplete='off'/>
IE 对autocomplete='off'
不生效,网上有很多方案,但对浏览器的前进后退操作无效,后面发现 input
的type
类型改成button
, IE
就不会记录之前的value值,后退操作获取到的value
是空
,所以我们将隐藏的input
标签的type
改成了button
来解决我们兼容IE的问题
<input type='button' name='userName' id='userName' autocomplete='off'/>