Javascript, isNaN and parsing
A word of warning with javascript and the magic of the isNaN
function
If we have an element such as
<input type="hidden" id="myelement" value="(some optional value)" />
Then if myelement has a value of "1"
<input type="hidden" id="myelement" value="1" />
var stringToTest = $("#myelement").val();
// stringToTest is "1"
isNaN(stringToTest); // outputs false
If we use a text value such as "test" then we get the following
<input type="hidden" id="myelement" value="test" />
var stringToTest = $("#myelement").val();
// stringToTest is "test"
isNaN(stringToTest); // outputs true
So far, this is all as we would expect. But if we have an empty value attribute like
<input type="hidden" id="myelement" value="" />
then we get the following problem
var stringToTest = $("#myelement").val();
// stringToTest is ""
isNaN(stringToTest); // outputs false!
The isNaN
function will return false for an empty string.
An easy solution is if you are expecting a number, make sure it is a number.
var stringToTest = "";
var stringAsInt = parseInt(stringToTest); // outputs NaN
isNaN(stringAsInt); // outputs true, as we would expect