Link to home
Start Free TrialLog in
Avatar of dukiejc99
dukiejc99

asked on

Need help to validate an input field to allow for only numbers and decimal

Hi,
I need help to validate an input field to only allow numbers from 0 to 999 and in addition to also allow for up to one decimal place.  

Any help would be appreciated.  

Thanks
-dukiejc
Avatar of leakim971
leakim971
Flag of Guadeloupe image

function validate(str) {
   return /^\d{0,3}(.\d)?$/.test(str);
}

test page : http://jsfiddle.net/nbRYd/
Have a look at this jQuery alphanumeric validation plugin
http://www.itgroup.com.ph/alphanumeric/
Avatar of dukiejc99
dukiejc99

ASKER

Sorry but I need a little bit more help on this.  I took a look at both and not sure how to modify the function for the parameters I need.
my function receive your string (field value) and return a boolean :
- true if valid
- false if not valid
hi leakim971,

Would it be something like this if I have 4 fields to validate?

<script>
function validate(str) {
   return /^\d{0,3}(.\d)?$/.test(str);
}

function validateAll() {
    var field1 = document.getElementById("field1");
    var field2 = document.getElementById("field2");
    var field3 = document.getElementById("field3");
    var field4 = document.getElementById("field4");
          if( !validate( field1.value ) ) {
              alert("Please enter a correct field1 number");
          }
          return true;
         else if(!validate( tc_field2.value )) {
                    alert("Please enter a correct field2 number");
                     }
       return true;
        else if(!validate( field3.value )) {
                    alert("Please enter a correct field3 number");
                    }
       return true;
        else if(!validate( tc_field4.value )) {
                    alert("Please enter a correct field4 number");
                 }
       return true;
}
</script>

<form id="testform" method="post" action="#" onsubmit="return validateAll();">
<input id="field1" class="text" type="text" name="field1" />
<input id="field2" class="text" type="text" name="field2" />
<input id="field3" class="text" type="text" name="field3" />
<input id="field4" class="text" type="text" name="field4" />
<input type="submit" value="Submit">
</form>
code updated : http://jsfiddle.net/nbRYd/7/
function validate(str) {
   return /^\d{0,3}(.\d)?$/.test(str);
}

function validateAll() {
    var field1 = document.getElementById("field1");
    var field2 = document.getElementById("field2");
    var field3 = document.getElementById("field3");
    var field4 = document.getElementById("field4");
    if( !validate( field1.value ) ) {
        alert("Please enter a correct number");
        field1.focus();
        return false;
    }
    if( !validate( field2.value ) ) {
        alert("Please enter a correct number");
        field2.focus();
        return false;
    }
    if( !validate( field3.value ) ) {
        alert("Please enter a correct number");
        field3.focus();
        return false;
    }
    if( !validate( field4.value ) ) {
        alert("Please enter a correct number");
        field4.focus();
        return false;
    }
    return true;
}

Open in new window

one more thing - it's still allowing me to add more than 4 numbers (9999).  I need it to only allow between 0-999 for integers and up to one decimal after that.  (999.9)
ASKER CERTIFIED SOLUTION
Avatar of leakim971
leakim971
Flag of Guadeloupe image

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
Thanks for all your help.