我创建了三个文本框。前两个文本框用于两个数字(用于减法)。结果将显示在第三个文本框中。我试图这样做,以便如果用户输入一个字母而不是一个数字,就会发出警报。
现在,isNaN无效。每当我在第一个或第二个文本框中放入任何内容时,无论数字或字母如何,它都会发出警报。这是我的代码。
function myFunction() {
var x = document.getElementById("taxFree"); //textbox 1
var y = document.getElementById("prodCost"); //textbox 2
var res = document.getElementById("salesMargin"); //Result textbox
// If x or y is Not a Number, send alert to user
if (isNaN(x) || isNaN(y)) {
alert("Numers only!");
return;
}
res.value = x.value - y.value;
}
提前致谢!
答案 0 :(得分:4)
尝试检查value
的{{1}}:
input
答案 1 :(得分:1)
isNaN
函数会告诉您某个值是否等于特殊值NaN。如果它是一个字符串,它将尝试解析它。对于不是数字的每个值,isNaN
都不会返回true,例如isNaN(true) === false
。
另一件事是你尝试在输入元素本身上调用isNaN
,而不是它的值。试试这个:
function myFunction() {
var taxFree = document.getElementById("taxFree");
var prodCost = document.getElementById("prodCost");
var salesMargin = document.getElementById("salesMargin"); //Result textbox
var x = parseFloat(taxFree.value);
var y = parseFloat(prodCost.value);
// If x or y is Not a Number, send alert to user
if (isNaN(x) || isNaN(y)) {
alert("Numers only!");
return;
}
salesMargin.value = x - y;
}
<input id="taxFree" value="15">
<input id="prodCost" value="10">
<input id="salesMargin" value="x">
<button onclick="myFunction()">Go!</button>
答案 2 :(得分:0)
如果您想知道输入的输入是否为数字,我必须说这种方法不起作用。
试试这个,这个函数只接受0到9之间的数字,不允许任何其他小数甚至小数。它通过检查输入的输入的char
来实现代码:onkeypress='return event.charCode >= 48 && event.charCode <= 57'
只需将此行添加到您的输入中,如下所示:
<input id="taxfree" onkeypress='return event.charCode >= 48 && event.charCode <= 57'>