jquery 响应 浏览 器 的 表单 自动 填充

jw5wzhpr  于 2022-11-22  发布在  jQuery
关注(0)|答案(2)|浏览(152)

我有两个表单元素,一个email和一个passwordpassword元素只有在email元素中输入了内容时才能显示,也就是说,只有在email不为空时才能显示。

<input id="email" name="email" onblur="if (jQuery(&quot;#email&quot;).val() === &quot;&quot;) { jQuery(&quot;#password&quot;).hide(); } else { jQuery(&quot;#password&quot;).show(); }" onchange="if (jQuery(&quot;#email&quot;).val() === &quot;&quot;) { jQuery(&quot;#password&quot;).hide(); } else { jQuery(&quot;#password&quot;).show(); }" onfocus="if (jQuery(&quot;#email&quot;).val() === &quot;&quot;) { jQuery(&quot;#password&quot;).hide(); } else { jQuery(&quot;#password&quot;).show(); }" placeholder="Email" style="width:360px;height:28px;margin-bottom:0px;" type="text">

如你所见,我正在处理三件事:

  • onfocus:这样当焦点进入email元素时,我就会做出React
  • onblur:这样当焦点离开email元素时,我就会做出React
  • onchange:以便在email元素更改时做出React

实际上,我只想在电子邮件更改时运行脚本。我不关心焦点,但我无法处理一般的更改事件。
另外,这也是我的主要问题,当浏览器自动填写表单时,我无法对产生的事件做出React。有这样的事件吗?我该如何处理?

zvms9eto

zvms9eto1#

浏览器自动填充发生在初始页面呈现时。您是否尝试过在“onReady”回调中检查该字段?请注意,此事件仅由更高级别的实现(如Jquery)提供,而不是由浏览器直接提供。
"ready" callback with jquery示例:(更新以反映意见)

$(function() {
  setTimeout(function() {
    $("#email").trigger('change');
  }, 200);
});

还有一篇文章解释了“自己动手的方式”:http://dustindiaz.com/smallest-domready-ever

xwbd5t1u

xwbd5t1u2#

您可以尝试禁用浏览器的自动完成功能:

<form action="demo_form.asp" method="get" autocomplete="off">

<INPUT NAME="name" SIZE=40 AUTOCOMPLETE=OFF>
  • 注意。第一个是HTML5 <form>自动完成属性 *

相关问题