【发布时间】:2015-07-05 15:57:28
【问题描述】:
我有一个包含此输入字段的表单:
<input type="number" name="price" data-bind="price">
还有这个淘汰赛验证定义:
...
price = ko.observable().extend({required: true, number: true})
...
问题在于,当我输入一个非数值时,浏览器实际上将type="number" 字段的值设置为一个空字符串(内部),因此模型接收到一个空字符串。因此,即使用户在字段中看到一个值,淘汰验证机制也会始终触发“必需”验证。最好触发“请输入数字”消息而不是“此字段为必填项”消息。
我当然可以使用type="text",但这会在移动设备上触发错误的键盘。任何想法如何解决这个问题?
这当然与这个问题有关:HTML5 input type=number value is empty in Webkit if has spaces or non-numeric characters?,但不幸的是,使用 type="tel" 对我来说不是一个选项。
【问题讨论】:
-
嗨@koenpeters 你不能创建自己的验证器并传递回调以显示适当的消息吗? github.com/Knockout-Contrib/Knockout-Validation/wiki/….
-
我最终使用了带有 html5 模式的 type="text":'\d+([,.]\d{2})?'。不是很好,但足以满足我的需要
-
我正面临与cordova+ 淘汰赛js 类似的问题。你能帮忙@koenpeters:stackoverflow.com/questions/42736659/…
标签: javascript knockout.js knockout-validation