禁用CakePHP表单输入框中的自动完成功能

时间:2014-09-11 14:35:40

标签: forms cakephp

我正在使用CakePHP表单助手创建表单输入和一些输入(大多数时间'用户名'密码')正在创建操作,登录操作等自动完成..这很烦人。我猜这些只是更常见,因此浏览器使用其cookie来尝试完成输入。

无论如何..如何禁用此功能?

在我看来:

...

echo $this->Form->input('username', array(
    'label' => 'Please enter your username',
    'class' => 'pure-u-1-2'
));
echo $this->Form->input('password', array(
    'label' => 'Please enter your password',
    'class' => 'pure-u-1-2'
));

...

我错过了什么?

2 个答案:

答案 0 :(得分:5)

您可以指定要发送到表单助手的属性。指定属性' autocomplete'并将其值设置为' off'。

...

echo $this->Form->input('username', array(
    'label' => 'Please enter your username',
    'class' => 'pure-u-1-2',
    'autocomplete' => 'off'
));
echo $this->Form->input('password', array(
    'label' => 'Please enter your password',
    'class' => 'pure-u-1-2',
    'autocomplete' => 'off'
));

...

这会为您的HTML带来类似的结果:

<input name="data[Model][username]" autocomplete="off" class="pure-u-1-2" id="ModelUsername" type="text">

您也可以在整个表单上执行此操作,而不仅仅是每个输入。只需在表单中指定相同的属性和值,如下所示:

...

echo $this->Form->create('Model', array(
    'class' => 'class',
    'autocomplete' => 'off'
));

这将在HTML中为您提供类似的内容:

<form action=".../Model/Action" class="class" autocomplete="off" id="ModelActionForm" method="post" accept-charset="utf-8">

注意多个浏览器现在会忽略自动完成=&#34;关闭&#34;或者自动完成=&#34; false&#34;。解决方法是在表单上的所有其他输入之前放置一个隐藏的文本和密码字段。浏览器将填充那些而不是您想单独留下的那些。

答案 1 :(得分:1)

最佳解决方案是使用autocomplete = new-password

它在Chrome和Firefox中运行良好

像这样:

$this->Form->input('password', array('type' => 'password', 'autocomplete' => 'new-password'));