我有两个表单元素,email
和password
。只有在password
元素中输入了某些内容时,才能显示email
元素。也就是说,只有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">
如你所见,我正在处理三个事件:
实际上,我只想在电子邮件发生变化时运行脚本。我不关心焦点,但我无法处理一般的更改事件。
此外,这是我的主要问题,我无法对浏览器自动填充表单时生成的事件作出反应。有这样的事件吗?我怎么处理呢?
答案 0 :(得分:1)
初始页面渲染时会发生浏览器自动填充。您是否尝试在“onReady”回调中检查字段?请注意,此事件仅由Jquery等更高级别的实现提供,而不是由浏览器直接提供。
"ready" callback with jquery的示例:(已更新以反映评论)
$(function() {
setTimeout(function() {
$("#email").trigger('change');
}, 200);
});
还有一篇文章解释了“自己动手”:http://dustindiaz.com/smallest-domready-ever
答案 1 :(得分:1)
您可以尝试按;
禁用浏览器自动填充功能<form action="demo_form.asp" method="get" autocomplete="off">
或
<INPUT NAME="name" SIZE=40 AUTOCOMPLETE=OFF>
注意。第一个是HTML5 <form>
自动完成属性