自动,智能地将输入文本字段校正为正整数

时间:2014-05-18 09:54:30

标签: jquery validation

如果之前已经提出过这样的道歉,我还没有找到任何以前全面提出这个问题的问题,也没有找到覆盖它的答案。

我想要一个客户端javascript(或JQuery)解决方案,强制用户在输入字段中使用整数。 (对于购物篮中商品的数量:在产品页面上添加商品时,以及在结帐前查看购物篮时)。

也许是出于困难,要求是:

  • 只接受字符0-9。
  • 通过关键快捷方式和/或右键菜单等,允许跨浏览器和操作系统进行剪切和粘贴。
  • 允许通过其他方式进入(是否有其他方式可以输入数字?)
  • 允许用户在输入新值之前删除所有字符(同时在某个阶段阻止空值,例如在失去焦点时

简而言之,我希望这是完美的设计。显然我会有服务器端代码来检查有效性,但我想关注可用性。

这是我想到的程序,但是想要提出有关潜在陷阱的问题,等等,全面涵盖用例。

客户端算法可以分为两个三个块:按键验证/过滤,去焦点验证/过滤,提交验证/过滤。

首先,JQuery中有任何本机函数可以帮我吗?如果没有,以下算法如何发声?

  1. 按键,然后按键更改:删除不在0-9范围内的字符。然后检查内容是否包含空字符串,或者可解析为正整数。 (这将允许剪切和粘贴)。但如果它不可解析呢?在设想无数的用例方面,我不想重新发明轮子。

  2. 失去焦点或提交时,请执行以上检查。 (以相同的方式,除了将空字符串转换为零)

  3. 我担心这会影响智能电视,智能手机和平板电脑,辅助功能工具等设备的可用性。

    简而言之,我的问题是:我有什么方法可以避免在这里重新发明轮子?这个问题已经彻底解决了,并且在某个地方是最新的吗?我把这整件事吹得不成比例吗?

    由于

1 个答案:

答案 0 :(得分:1)

你的问题是很多人面临的问题,但我不知道有什么标准的解决方案。话虽如此,我猜你仍然会把事情搞得一团糟。(理想情况下,你不应该改变用户输入的任何内容,你应该告诉他错误,但不要自动更改)。现在,您只需使用正则表达式使用HTML5验证。如果用户输入的内容不满足RegEx,则文本框旁会显示错误消息,在解决问题之前不应允许他继续操作。这样,相同的RegEx可用于处理所有情况,如整数,非空文本框等。例如:/ ^ [+]?([0-9] +)$ /可用于正数。您也可以使用javascript实现相同的功能。

相关问题