【html】巧妙解决input标签自动填充问题

前言:如果是同域名网站,并且曾经在该网站下登录过账号密码,并且选择了记住账号密码。chrome浏览器会对账号密码进行自动填充功能,虽然这功能给我们提供了很多方便,但是也带来了些困扰。

 

一、问题起始

①当“密码”那项input的type是text的时候并不会出现问题

<label>
    <span>卡号:</span>
    <input type="text" name="userName" placeholder="请输入卡号" autocomplete="off">
</label>
<label>
    <span>密码:</span>
    <input type="text" name="password" placeholder="请输入密码" autocomplete="off">
</label>

 

②当“密码”那项input的type改成password的时候,问题就出现了。

<label>
    <span>卡号:</span>
    <input type="text" name="userName" placeholder="请输入卡号" autocomplete="off">
</label>
<label>
    <span>密码:</span>
    <input type="password" name="password" placeholder="请输入密码" autocomplete="off">
</label>

这时会发现,浏览器对input进行了自动填充,而且背景颜色变成了淡黄色,这淡黄色的背景颜色是无法修改了。为什么把input的type改成password,就会发生自动填充呢?我的猜想是chrome浏览器对type="password"进行了识别,并把"密码"项进行了填充,并且把"密码"项前面input当成了"账号"项进行了填充。

 

二、解决方法

<label><span></span><input type="text" name="hidden1" ></label>
<label><span></span><input type="password" name="hidden2" ></label>
<label>
    <span>卡号:</span>
    <input type="text" name="userName" placeholder="请输入卡号" autocomplete="off">
</label>
<label>
    <span>密码:</span>
    <input type="password" name="password" placeholder="请输入密码" autocomplete="off">
</label>

向这样,在"账号""密码"项前面添加多两个input标签,并新添的第二个input标签的type="password"看执行效果。

这时候就可以发现,新添的两个input标签就被自动填充了,而"账号""密码"框不再会被进行自动填充了,不难得出chrome浏览器只对带password的前两个input标签自动填充。最后只需要进行收尾,把前面两个input进行隐藏就可以了。(通过网友的反馈:直接通过display进行隐藏的话,第二password还是会出现密码提示,但是通过width:0; height:0;的方式进行“隐藏”能很好的解决这个问题)。

<label><span></span><input type="text" name="hidden1" style="width:0; height:0;"></label>
<label><span></span><input type="password" name="hidden2" style="width:0; height:0;"></label>
<label>
    <span>卡号:</span>
    <input type="text" name="userName" placeholder="请输入卡号" autocomplete="off">
</label>
<label>
    <span>密码:</span>
    <input type="password" name=password" placeholder="请输入密码" autocomplete="off">
</label>

 

三、解决方法(2)

<label>
    <span>卡号:</span>
    <input type="text" name="userName" placeholder="请输入卡号" autocomplete="new-password">
</label>
<label>
    <span>密码:</span>
    <input type="password" name=password" placeholder="请输入密码" autocomplete="new-password">
</label>

有网友提供了新的方法来解决该问题(通过给input标签条件autocomplete="new-password"),发现也能解决这个问题,至于有无其他的衍生问题,博主并没有去检验了,觉得第一种方法太麻烦的朋友,不妨可以试试该种方法。

 

在使用Vue框架的el-input组件时,浏览器自动填充可能造成一些问题。浏览器自动填充是浏览器根据用户之前的输入记录和记住密码等信息自动填充输入框内容的功能。但是这个功能也许不符合我们的需求,所以需要解决这个问题解决浏览器自动填充的方法有以下几种: 1. 屏蔽自动填充:可以通过设置input标签的autocomplete属性为off来禁止自动填充。 ```html <el-input v-model="inputValue" :autocomplete="'off'" ></el-input> ``` 2. 修改input事件:通过监听input事件,手动更新数据模型中的值,这样可以覆盖浏览器自动填充的内容。 ```html <el-input v-model="inputValue" @input="handleInput" ></el-input> ``` ```javascript methods: { handleInput() { this.inputValue = this.$refs.input.value; // 获取input框的值并更新数据模型 }, }, ``` 3. 利用setTimeout延迟设置值:使用setTimeout可以使得设置值操作在下一次事件循环开始,从而避免被浏览器自动填充的值覆盖。 ```javascript mounted() { setTimeout(() => { this.inputValue = ''; }, 0); }, ``` 4. 结合JavaScript和Vue的解决方案:在mounted钩子函数中使用JavaScript的代码将input框的值清空,并将其焦点移至其他input元素。 ```javascript mounted() { let input = document.getElementById('inputId'); input.value = ''; let otherInput = document.getElementById('otherInputId'); otherInput.focus(); }, ``` 这些方法可以有效解决浏览器自动填充所带来的问题,根据需要选择适合的解决方案即可。
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值