【发布时间】:2017-05-17 10:46:43
【问题描述】:
我在看make an input only-numeric type on knockout。 接受的答案工作正常,但如何防止输入多于一个小数点(如 4.4.4)(或如何防止第二个小数点)?
代码如下:
<input id="text" type="text" data-bind="numeric, value: number">
ko.bindingHandlers.numeric = {
init: function (element, valueAccessor) {
$(element).on("keydown", function (event) {
// Allow: backspace, delete, tab, escape, and enter
if (event.keyCode == 46 || event.keyCode == 8 || event.keyCode == 9 || event.keyCode == 27 || event.keyCode == 13 ||
// Allow: Ctrl+A
(event.keyCode == 65 && event.ctrlKey === true) ||
// Allow: . ,
(event.keyCode == 188 || event.keyCode == 190 || event.keyCode == 110) ||
// Allow: home, end, left, right
(event.keyCode >= 35 && event.keyCode <= 39)) {
// let it happen, don't do anything
return;
}
else {
// Ensure that it is a number and stop the keypress
if (event.shiftKey || (event.keyCode < 48 || event.keyCode > 57) && (event.keyCode < 96 || event.keyCode > 105)) {
event.preventDefault();
}
}
});
}
};
【问题讨论】:
-
嗨 Rajesh,在接受的答案中我不能输入带小数点的数字
-
你可以试试这样的:Fiddle。请注意,这不是完整的解决方案。如果您可以制定适当的模式,则可以使用此解决方案。否则,您甚至可以尝试我的问题中的方法。他们工作正常,只是他们会添加另一轮处理。
-
您是否有不能使用numeric extender的原因?
-
@user3297291 数字扩展器很有用,但它不能防止在输入中放置不需要的值...