【发布时间】:2014-07-31 05:54:54
【问题描述】:
我有一个带有电子邮件文本字段的网页,它不在 <form> 标记内,如下所示:
<input id="email" label="False" name="email" placeholder="Email" required="required" type="email" value="">
我使用的是最新的 Chrome (v35),并且我之前输入了一个名为“example@domain.com”的电子邮件(为了便于解释)。
问题是这样的: 当我重新加载网页时,单击电子邮件文本字段并开始输入“exa”,会弹出一个带有“example@domain.com”的自动完成框。 如果我将鼠标光标移到建议上而不单击它,则文本字段会在其中显示“example@domain.com”。当我将光标从建议框移开时,文本字段仍然显示完整的电子邮件地址。
为什么会有这样的问题?因为当我尝试使用 jQuery 或 vanilla javascript 读取文本字段的值时,我得到的是“exa”,而不是“example@domain.com”。
$("#email").val(); // returns "exa"
如果我将输入文本字段封装在 <form> 标记内,则不会出现上述问题 - 当鼠标光标移开时,自动完成的文本会从输入字段中消失,因此文本字段并且读数是同步的。
<form><input id="email" label="False" name="email" placeholder="Email" required="required" type="email" value=""></form>
根据this,输入字段可以在<form> 标记之外完美工作。
我在 Firefox 上测试过,一切正常。
那是为什么呢?
【问题讨论】:
-
你能发布你的代码吗.. 可能是通过 jsfiddle 或 codepen.io .. 这比猜测要好。
-
有趣的注意事项:如果您在包含在表单中的第二个输入中放置一个没有
@的单词并按Enter,您将收到消息“请包含一个'@'.. ."。第一个输入不会发生这种情况。
标签: javascript jquery html google-chrome