检查文本框值是字符串还是javascript中的数字

wob*_*ano 6 javascript

基本上我有以下代码:

<input type="text" value="123" id="txtbox">
<script>
var myVar = document.getElementById('txtbox').value;

if (myVar.substring) {
alert('string');
} else{
alert('number');
}
</script>
Run Code Online (Sandbox Code Playgroud)

无论您在文本框中放置什么值,它都会始终发出警报string.有没有办法,如果你在文本框中放一个数字,它会提醒number而不是字符串?谢谢.

T.J*_*der 13

valueinput元素是永远的字符串.它可能是一串数字.

如果你想知道该字符串是否只包含有效数字,你必须解析它(并决定你认为什么是有效数字,并允许它).

例如,你会让人们告诉你使用parseInt(myVar)或者一元+(+myVar)或isNaN(myVar)(它做的是一元+一样)或Number(myVar)(相同),但是:

  1. parseInt只解析字符串的开头,parseInt("345foo")345

  2. parseInt当然,仅适用于整数; 你想要的parseFloat是小数部分的数字

  3. 所有这些都无法理解成千上万的分隔符

  4. 所有这些都无法理解不是的小数分隔符.(例如,在许多语言环境中,,有时甚至是空格)

  5. +myVarNumber(myVar)等等isNaN(myVar)将空字符串视为0

......那种事.因此,您必须根据要接受的输入对字符串进行一些准备.

一旦你决定要处理哪种格式,这里有十几个问题,其中有关于进行实际解析的答案:


KJ *_*ice 5

isNaN(字面意思是“不是数字”):

var myVar = document.getElementById('txtbox').value;

var myNum = +myVar;//as suggested by T.J. 
if (isNaN(myNum)) {
   alert('string');
} else{
   alert('number');
}
Run Code Online (Sandbox Code Playgroud)