更新: [已解决]感谢大家回答我,我尝试了两种方法,这真的很有效! 以下是jsbin:
This one was inspired by Secret's answer
This one is from Alexander's O Mara's answer
我试图检查输入的值是否为数字。
我正在使用typeof
进行检查。如果输入的值是数字alert('number');
。但如果输入的值是字符串alert(’string');
。
问题是,它总是alert(’string');
,尽管输入的值是数字。
出了什么问题?我该如何解决?
这是我的代码:
<input type="text" placeholder="inputText" id="inputText">
<input type="button" onclick="alertType()" value="alertType">
<script>
function alertType()
{
var someStr = document.getElementById("inputText").value;
var someStrType = typeof someStr;
alert(someStrType);
}
</script>
答案 0 :(得分:1)
您只需使用Number
将字符串转换为数字,然后使用isNaN
检查是否已成功转换为数字。如果Number
无法转换为NaN
可以检测到的数字,isNaN
将返回<input type="text" placeholder="inputText" id="inputText">
<input type="button" onclick="alertType()" value="alertType">
<script>
function alertType()
{
var someStr = document.getElementById("inputText").value;
var someNum = Number(someStr);
if (isNaN(someNum)) {
alert('not a number');
}
else {
alert('a number');
}
}
</script>
。
{{1}}
答案 1 :(得分:1)
这里的问题是你的数据源是textbox,它以字符串形式给出值。您需要将其解析为数字。
答案 2 :(得分:1)
var my_numberA = 3; // This is typeof number
var my_numberB = '3'; // This is typeof string
所以取决于你如何写它:3是一个数字,其中'3'是一个字符串
诀窍是执行以下操作:
任何字符串乘以1都会将字符串转换为数字。 但是,乘以不能用数字表示的字符串将返回错误。 因此,您需要使用try {} catch(err){}来补偿这种可能性,如果可能的话,将字符串转换为数字
function convertToNumber(input){
try{var output = 1*input}catch(error){var output = input}
return output
}
var my_numberA = 3; // This is typeof number
var my_numberB = '3'; // This is typeof string
console.log( typeof my_numberA ) // Will show 'number'
console.log( typeof my_numberB ) // Will show 'string'
console.log( typeof convertToNumber(my_numberA) ) // Will show 'number'
console.log( typeof convertToNumber(my_numberB) ) // Will show 'number'
我更喜欢这种情况而不是Number()
函数,因为它返回相同的传递对象而不是返回NaN。
答案 3 :(得分:0)
问题是,当您从dom获取inputText值时, 是一个字符串。例如,"12"
是一个字符串,而不是12
您可以做的是检查是否不是数字:
function alertType()
{
var someStr = document.getElementById("inputText").value;
if(isNaN(someStr)){
//it's not a number!
} else {
//it's a number!
}
}
答案 4 :(得分:0)
试试这个......
$('#clickMe').click(function () {
var inputVal = $("#inputText").val();
var value = Number(inputVal);
if (isNaN(value)) {
alert('not a number');
} else {
alert('a number');
}
});