我需要在我的页面中删除所有文本框中的自动填充功能
所以我给了&lt; input name="txt_username" id="txt_username" type="text" value="" autocomplete="off" /></dd></dl>
但是有人知道这个没用吗?
答案 0 :(得分:10)
自动完成,除非你用AJAX做一些疯狂的事情,这是一个客户端的事情,你不能总是这样控制它。
由于自动填充功能通过缓存特定输入文本名称的先前条目,许多银行会在每个表单页面加载时随机生成输入文本名称,但要跟踪在隐藏的输入元素或服务器端的其他位置生成。
所以而不是
<input name="txt_username" id="txt_username" type="text" value="" autocomplete="off" />
可能类似
<input type="text" name="f6Lx571p" id="txt_username"/>
<input type="hidden" name="username_key" value="f6Lx571p" />
服务器端代码相应调整。例如,PHP代码可能看起来像:
<?php
$user = $_POST['txt_username'];
...
但它必须改为:
<?php
$user = $_POST[$_POST['username_key']];
...
它有点烦人,但它确实有效。
答案 1 :(得分:3)
您还可以尝试在表单元素上放置autocomplete
属性。
<form id="myForm" autocomplete="off">
...
</form>
这可能会使您的HTML无效,因此您可能需要考虑使用JavaScript动态添加此属性。
答案 2 :(得分:3)
无法关闭自动填充功能,它来自浏览器。如果我想关闭自动完成功能,我将采取以下措施:
使用字段名称和随机数启动会话:
session_start();
$_SESSION['strUsername'] = "username_" . mt_rand(0, 1000000);
现在使用此变量作为字段名称:
name="' . $_SESSION['strUsername'] . '" id="txt_username" type="text" value="" autocomplete="off" /></dd></dl>
要检查字段的值,只需使用
$username = $_POST[$_SESSION['strUsername']];
现在,名称每次都是随机的,因此浏览器无法识别该字段,也不会自动完成。
答案 3 :(得分:2)
无法关闭自动填充功能,这是浏览器提供的功能,但我认为这必须有所帮助:<input type="password" name="password" readonly onfocus="this.removeAttribute('readonly')">