我有一个带onchange事件的输入元素。如果未接受该值,则onchange事件会警告用户,并将焦点返回到input元素。 但是,如果用户然后单击该元素,则onchange事件不会触发 - 这是可以理解的,因为用户没有进行进一步的更改,但它引入了仅验证一次的问题。
我探索了一种可能的解决方案,将值重置为更改之前的值,但我想尽可能避免这种情况,以便允许用户更正他们输入的值而不必再次输入整个内容。
另一种可能性是将验证放入模糊事件中,但这会引入其他问题,例如,如果它们被聚焦,则会触发其他元素上的事件。
所以我的问题是,如果用户将输入值从“X”更改为“Y”,我是否可以将焦点返回到元素,将值保留为“Y”,但将其视为“X”更改值,因此如果用户将其更改回“X”,则更改事件将不会随后触发,但如果将其保留为“Y”并再次失去焦点,则更改事件将再次触发,就像从“X”更改一样到'Y'?
答案 0 :(得分:0)
为什么不将字段标记为无效(使用CSS或jQuery添加标记)而不是使用警报?在用户将值更改为有效值之前,该字段仍然无效,验证脚本将删除无效标记。
答案 1 :(得分:0)
输入类型文字是?在这些情况下,我更喜欢使用onkeyup而不是onchange,因为你正在描述的原因。
有时甚至不起作用:当使用鼠标将文本粘贴到文本框中时,这不会捕获更改,因为没有按下键(但是shift + insert或ctrl + v是)。您可能希望将相同的事件添加到onchange和onkeyup以覆盖所有基础。