Basically I have the following code:
<input type="text" value="123" id="txtbox">
<script>
var myVar = document.getElementById('txtbox').value;
if (myVar.substring) {
alert('string');
} else{
alert('number');
}
</script>
No matter what value you put in the textbox, it will always alert string
. Is there a way that if you put a number in the textbox it will alert number
instead of string? Thank you.
Basically I have the following code:
<input type="text" value="123" id="txtbox">
<script>
var myVar = document.getElementById('txtbox').value;
if (myVar.substring) {
alert('string');
} else{
alert('number');
}
</script>
No matter what value you put in the textbox, it will always alert string
. Is there a way that if you put a number in the textbox it will alert number
instead of string? Thank you.
2 Answers
Reset to default 13value
on input
elements is always a string. It might be a string of digits.
If you want to know whether that string only contains valid numbers, you have to parse it (and decide what you consider a valid number, and allow for that).
For instance, you'll get people telling you to use parseInt(myVar)
or the unary +
(+myVar
) or isNaN(myVar)
(which does what the unary +
does) or Number(myVar)
(same), but:
parseInt
only parses the beginning of the string,parseInt("345foo")
is345
parseInt
is, of course, only for whole numbers; you'd wantparseFloat
for numbers with fractional portionsAll of those will fail to understand thousands separators
All of those will fail to understand a decimal separator that isn't
.
(e.g., in many locales it's,
or sometimes even a space)+myVar
andNumber(myVar)
andisNaN(myVar)
and such will treat an empty string as0
...that kind of thing. So you have to do some prep on the string according to what input you want to accept.
Once you've decide what format(s) to handle, there are a dozen questions with answers here about doing the actual parsing:
- How do I Convert a String into an Integer in JavaScript? (note that's integer-specific)
- What's the fastest way to convert String to Number in JavaScript?
is isNaN
(literally "is Not a Number"):
var myVar = document.getElementById('txtbox').value;
var myNum = +myVar;//as suggested by T.J.
if (isNaN(myNum)) {
alert('string');
} else{
alert('number');
}