基本上我有以下代码:
<input type="text" value="123" id="txtbox">
<script>
var myVar = document.getElementById('txtbox').value;
if (myVar.substring) {
alert('string');
} else{
alert('number');
}
</script>
无论您在文本框中放置什么值,它都会始终提醒string
。有没有办法,如果你在文本框中输入一个数字,它会提醒number
而不是字符串?谢谢。
答案 0 :(得分:13)
value
元素上的 input
始终一个字符串。它可能是一串数字。
如果你想知道该字符串是否只包含有效数字,你必须解析它(并决定你认为什么是有效数字,并允许它)。
例如,您可以让人们告诉您使用parseInt(myVar)
或一元+
(+myVar
)或isNaN(myVar)
(这会使用一元{ {1}}确实)或+
(相同),但:
Number(myVar)
仅解析字符串的开头,parseInt
为parseInt("345foo")
345
当然只适用于整数;您希望parseInt
代表具有小数部分的数字
所有这些都无法理解千位分隔符
所有这些都无法理解不是parseFloat
的小数点分隔符(例如,在许多区域设置中.
或有时甚至是空格< / p>
,
以及+myVar
和Number(myVar)
等会将空字符串视为isNaN(myVar)
......那种事。所以你必须根据你想接受的输入对字符串做一些准备。
一旦您决定要处理哪种格式,就会有十几个问题与答案进行实际解析:
答案 1 :(得分:3)
是isNaN
(字面意思是“不是数字”):
var myVar = document.getElementById('txtbox').value;
var myNum = +myVar;//as suggested by T.J.
if (isNaN(myNum)) {
alert('string');
} else{
alert('number');
}