JavaScript - What is the opposite of isNaN?

12,834

Solution 1

The literal opposite of isNaN(num) is !isNaN(num). However, this won't always verify that something is numeric. To check if something is numeric, use jQuery's $.isNumeric(num), or this

function isNumeric(num) {
  return !isNaN(parseFloat(num)) && isFinite(num);
}

Solution 2

If your code really looks like this:

  else (x>=0 || x!==null || x!=="")
  {
    document.forms["myForm"]["SN"].style.border="1px solid green";
  }

then your problem really has nothing to do with isNaN. Syntactically, your else clause only applies to that parenthesized test expression. That expression will be evaluated when the if clause is false. It will have no effect on anything, however; the value will just be thrown away. The subsequent block statement in which the border is made green will always be executed; it has nothing to do with the if - else statement.

The syntax for the else clause in JavaScript does not involve a test condition like the if clause does. After an else should come a statement. In your case, that "statement" is the parenthesized test expression, which while useless is a perfectly valid statement in JavaScript.

Share:
12,834
Admin
Author by

Admin

Updated on June 08, 2022

Comments

  • Admin
    Admin about 2 years

    I am very new to JavaScript, and trying to run a simple script which gives my field a red border if it is incorrectly completed (i.e. if the entry is not a number), but then turns the border colour green if the field is then correctly completed, but the form cannot be submitted because a different field has been filled out incorrectly.

    So far i have managed to do this for a text field by using this:

    function validateForm()
    {
    var x=document.forms["myForm"]["FN"].value;
    if (x==null || x=="")
      {
      alert("First name must be completed");
      document.forms["myForm"]["FN"].style.border="1px solid red";
      return false;
      }
      else (x!==null || x!=="")
      {
      document.forms["myForm"]["FN"].style.border="1px solid green";
      }
    

    but I am now trying to do the same thing but limit the field to only accept numbers. What I have so far is this:

    var x=document.forms["myForm"]["mobile"].value;
    if (isNaN(x) || x==null || x=="")
      {
      alert("Contact number must be completed with numbers only");
      document.forms["myForm"]["mobile"].style.border="1px solid red";
      return false;
      }
      else (x!==null || x!=="" || // need to write here is not isNaN !isNaN//)
      {
      document.forms["myForm"]["SN"].style.border="1px solid green";
      }
    

    This restricts the fie;ld to only allowing numbers, but once the form box border turns red, it will not turn to green once the validation has been met.

    Any help/tips on how to write is not isNaN, or any work arounds would be appreciated.

    Please try to keep as simple as poss, as am a complete beginner with web design & JavaScript.

    Thanks!

  • GusDeCooL
    GusDeCooL about 9 years
    everything is jQuery
  • platinums
    platinums about 8 years
    well spotted, perhaps he meant to use else **if**