通过浏览器对表单自动填充做出反应
React to form auto-filling by browser
我有两个表单元素,一个email
和一个password
。只有在email
元素中输入了某些内容时,才必须显示password
元素。也就是说,仅当email
不为空时。
<input id="email" name="email" onblur="if (jQuery("#email").val() === "") { jQuery("#password").hide(); } else { jQuery("#password").show(); }" onchange="if (jQuery("#email").val() === "") { jQuery("#password").hide(); } else { jQuery("#password").show(); }" onfocus="if (jQuery("#email").val() === "") { jQuery("#password").hide(); } else { jQuery("#password").show(); }" placeholder="Email" style="width:360px;height:28px;margin-bottom:0px;" type="text">
正如你所看到的,我正在处理三个事件:
onfocus
:这样当焦点进入电子邮件元素时我会做出反应onblur
:这样当焦点离开电子邮件元素时我会做出反应onchange
:以便在电子邮件元素更改时做出反应
事实上,我只想在电子邮件更改时运行脚本。我不关心焦点,但我无法处理一般的更改事件。
此外,这也是我的主要问题,我无法对浏览器自动填写表单时生成的事件做出反应。有这样的事件吗?我该怎么处理?
浏览器自动填充在初始页面呈现时发生。您是否尝试过在"onReady"回调中检查字段?请注意,此事件仅由Jquery等更高级别的实现提供,而不是由浏览器直接提供。
jquery的"就绪"回调示例:(更新以反映注释)
$(function() {
setTimeout(function() {
$("#email").trigger('change');
}, 200);
});
还有一篇文章解释了"自己动手":http://dustindiaz.com/smallest-domready-ever
您可以尝试禁用浏览器自动完成功能;
<form action="demo_form.asp" method="get" autocomplete="off">
或
<INPUT NAME="name" SIZE=40 AUTOCOMPLETE=OFF>
注意。第一个是HTML5<form>
自动完成属性
相关文章:
- 通过浏览器对表单自动填充做出反应
- 移动浏览器、地理位置和自动填充地址
- 当浏览器自动填充表单字段时,$parsers$formatters函数不会启动
- 在注册表单上,表单字段不会保存在提交时自动填充的浏览器中.(ReactJs)
- 别名带有浏览器化填充码的 npm 模块
- 用于从剪贴板中的表自动填充活动浏览器窗口中的字段的脚本
- 壁虎浏览器不会在加载时填充输入
- 浏览器填充码首先加载
- 嵌入光滑网格图以填充浏览器窗口
- 是什么使浏览器自动填充电子邮件/密码输入
- 如何填充浏览器's用矩形显示的整个窗口/文档
- 使用SimpleModalJS创建一个模式来填充浏览器窗口
- Sencha Ext面板填充浏览器
- 如何制造<光>元素动态调整以填充浏览器窗口的整个宽度
- 如何修复引导导航条固定顶部填充浏览器调整大小
- 使页面分段填充浏览器高度
- 自动填充浏览器文档高度以滚动到任何元素
- 如何动态确定填充浏览器窗口需要多少个正方形
- 使用 jQuery 使元素填充浏览器视口的整个高度
- 如何使InkScape SVG文件填充浏览器窗口并具有交互性