我有两个表单元素,一个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">
如你所见,我正在处理三件事:
onfocus
:这样当焦点进入email元素时,我就会做出Reactonblur
:这样当焦点离开email元素时,我就会做出Reactonchange
:以便在email元素更改时做出React
实际上,我只想在电子邮件更改时运行脚本。我不关心焦点,但我无法处理一般的更改事件。
另外,这也是我的主要问题,当浏览器自动填写表单时,我无法对产生的事件做出React。有这样的事件吗?我该如何处理?
2条答案
按热度按时间zvms9eto1#
浏览器自动填充发生在初始页面呈现时。您是否尝试过在“onReady”回调中检查该字段?请注意,此事件仅由更高级别的实现(如Jquery)提供,而不是由浏览器直接提供。
"ready" callback with jquery示例:(更新以反映意见)
还有一篇文章解释了“自己动手的方式”:http://dustindiaz.com/smallest-domready-ever
xwbd5t1u2#
您可以尝试禁用浏览器的自动完成功能:
或
<form>
自动完成属性 *