function isNumber(n) {
var j = n.trim();
return (j % 1 === 0 && j != "");
}
如果输入的值为“14.0”,我的函数仍然返回true。它应该只允许没有任何小数的整数。
答案 0 :(得分:5)
您可以使用正则表达式
function isWhole(n) {
return /^\d+$/.test(n);
}
$("#number").change(function() {
if (isWhole($(this).val())) {
$(".error").hide();
} else {
$(".error").show();
}
});
.error {
display: none;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="text" id="number" name="number" />
<p class="error">Whole numbers only</p>
答案 1 :(得分:1)
尝试将其视为字符串,并使用匹配函数和正则表达式来查看是否存在小数。您可以使用yourVariable.match (/[0-9]*(\.)[0-9]*/)
。如果那里有小数,它将返回true。
答案 2 :(得分:0)
滥用round()函数。这将摆脱垃圾:
function isNumber(n) {
if(Math.round(n)==n && n.length==(Math.round(n)).length)
return n;
else return false;
}
本质上,如果数字不是整数,则此函数返回false,如果是整数,则返回完整的整数。
输入14.0应该返回false
输入13.5应该返回false
输入13应返回13.