【发布时间】:2011-01-16 17:05:22
【问题描述】:
我编写了一组 javascript 函数,允许我验证表单上的用户输入。我只想接受有效的输入,并强加以下行为:
当用户输入无效表单时,我会显示警报并通知他们输入的值不正确。至关重要的是,表单中的原始(有效)值没有改变。
只有在值被验证后才会更改值。
例如,假设我想在一个字段中只接受正整数。
这是描述所需行为的事件序列。
场景 1(有效输入)
- 在输入字段中使用有效默认值加载表单
- 用户输入有效号码
- 输入字段值已更新(按照正常的表单行为)
场景 2(无效输入)
- 在输入字段中使用有效默认值加载表单
- 用户类型无效
- 显示警告框 alert('Invalid value')
- 输入字段值未更改(即该值与用户输入无效数字之前的值相同)
[编辑]
我目前面临的唯一问题(即这个问题正在寻求答案)是场景 2,行动点 4。更具体地说,问题退化为以下问题:
如果我(以某种方式)确定用户输入的值无效,如何阻止字段值发生变化。这是真的,我只想回答。
我也在做服务器端检查,这个问题只是关于前端 - 即如果我确定该值不正确,则拒绝更改字段(表单文本输入)值。
顺便说一句,我正在使用 jQuery,并希望以一种将行为与显示分开的方式来实现这一点(我认为这就是术语“不引人注目”的意思?)
任何关于如何实现上述行为的建议,我们将不胜感激。
PS:我不想为此使用另一个 jQuery 插件。我应该可以使用 jQuery + 我已经编写的简单的 javascript 验证函数。
【问题讨论】:
-
如果用户每次输入错误或输入错误值时都会收到警告框,因为这会改变焦点,您可能会惹恼用户。我会在字段旁边发出通知。
-
是的,你可能是对的。但由于我不想改变值(我想保留旧的 CORRECT 值),也许我可以只更改输入字段的背景颜色(表示它不被接受),同时保持旧值。另一方面,如果该值被接受,我认为将背景颜色更改为另一种颜色以表明它已被接受会很酷。我认为如果颜色变化在变回白色之前持续几秒钟会很有用,作为视觉线索。我希望有人阅读此评论并展示如何做类似的事情:)
-
您不应该只更改颜色来指示错误:始终还应使用描述性错误消息(例如,在无效输入上方)。
-
顺便说一句,不要依赖 JavaScript 进行验证:它可能已关闭/根本不可用。 总是检查服务器端的输入!
标签: javascript jquery