允许在使用NaN时输入小数点
Allow decimal point to be entered while using NaN
我有一个我正在制作的计算器脚本,它可以防止人们输入字母或数字以外的东西。我需要允许小数点。我该怎么做呢?
$("input[type=text]").keyup(function () {
var number = parseFloat($(this).val());
var inc = parseFloat($(this).attr("inc"));
var newValue = number / inc;
$("input[type=text]").each(function () {
if(isNaN(newValue * parseFloat($(this).attr("inc"))))
$(this).val(0);
else
$(this).val(newValue * parseFloat($(this).attr("inc")));
});
});
如果你有一个简单的修复或一个完整的新代码块,那么请告诉我。
我需要能够有小数点。例如:3.22
JSFiddle在这里可用
try this
$("input[type=number]").keyup(function () {
var regexp = /^[-+]?[0-9]+('.[0-9]+)?$/;
var number = $(this).val();
var s=regexp.test(number);
//alert(s);
var inc = parseFloat($(this).attr("inc"));
var newValue = number / inc;
$("input[type=number]").not($(this)).each(function () {
if(!s)
$(this).val(0);
else
$(this).val(newValue * parseFloat($(this).attr("inc")));
});
});
解决这个问题有两种方法:
您也正在更新当前输入框(您当前正在输入的输入框),这应该与其他输入框分开处理。* *修改* *:http://jsfiddle.net/RX2sL/10/
$("input[type=text]").keyup(function () { var number = parseFloat($(this).val()); var inc = parseFloat($(this).attr("inc")); var newValue = number / inc; var curr = this; $("input[type=text]").each(function () { if(isNaN(newValue * parseFloat($(this).attr("inc")))) $(this).val(0); else { if(this != curr){ $(this).val(newValue * parseFloat($(this).attr("inc"))); } else{ /* handle currrent input box */ } } }); });
一个更好的&更灵活的方法是在keyup事件上根据有效的十进制字符串RegExp检查字符串。regex -检查十进制(javascript)
如果你使用的是HTML5,可能有一个更简单的解决方案(我假设有一个文本框,你希望用户输入一些数字):
<input type="number" step="1" pattern="'d+"/>
点击这里阅读更多信息
您还可以控制min
, max
等
为什么要在html元素中提到type="text"呢?如果它是数字,则不需要解析它,并且在每个函数中直接将结果附加到当前输入(因此每次输入值更改),我改变了一些东西,因此请在应用
之前检查一下。