如何在文本框中删除自动完成功能

时间:2012-05-02 09:37:41

标签: php html

我需要在我的页面中删除所有文本框中的自动填充功能  所以我给了&lt; input name="txt_username" id="txt_username" type="text" value="" autocomplete="off" /></dd></dl>

但是有人知道这个没用吗?

4 个答案:

答案 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')">