1

我有两个表单元素, aemail和 a 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:以便我在焦点进入电子邮件元素时做出反应
  • onblur:以便在焦点离开电子邮件元素时做出反应
  • onchange:以便我在电子邮件元素更改时做出反应

实际上,我只想在电子邮件更改时运行脚本。我不关心焦点,但我无法处理一般的更改事件。

此外,这是我的主要问题,我无法对浏览器自动填写表单时生成的事件做出反应。有这样的活动吗?我该如何处理?

4

2 回答 2

1

浏览器自动填充发生在初始页面呈现时。您是否尝试过检查“onReady”回调中的字段?请注意,此事件仅由 Jquery 等更高级别的实现提供,而不是直接由浏览器提供。

使用 jquery 的“就绪”回调示例:(更新以反映评论)

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

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

于 2012-09-08T15:49:36.560 回答
1

您可以尝试通过以下方式禁用浏览器自动完成功能;

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

或者

<INPUT NAME="name" SIZE=40 AUTOCOMPLETE=OFF>

笔记。第一个是 HTML5 <form>autocomplete 属性

于 2012-09-08T16:05:19.553 回答