限制输入字段的范围

Though it is a very common question. I have one input field in which the data entered must be between 1 and 150.

Problem is I am already using some validations on that. That validation is being used by many other input fields. So I cannot change that. It is the num() function.

On one field mesure I want to add extra functionality. I tried it with validate. I don't know how to merge these two validations for only one input field using both function in document.ready.

I can do it in either jQuery or PHP.

<input type="text" name='mesure' class="numbersonly" maxlength="3" onblur =" validate()"/>


function num() {

    $(".numbersonly").bind('keypress', function(e) {

        if (e.which != 8 && e.which != 0 && (e.which < 48 || e.which > 57)) {

            $("#errmsg").html("numbers please");

            return false;
        }
    });

}

function validate()
{
   if( document.form.mesure.value >150 )
   {
       alert( "out of range!" );
       document.form.mesure.focus() ;
       return false;
   }
}      

Why not using onkeypress/onkeyup, check it using the validate function. But remember that javascript is not the real solution for limitation - People can turn of or change the javascript. Also use php for checking the value.

For example, if your input field that you want to limit has the id #text, you can use

if($('#text').val().length>150){
    //do stuff here
}

As you will probably post the entered value to some place in the backend, the real validation must happen in php. There, you can do something like

<?php
    if(strlen($_POST['text'])>150){
        echo "too long";
        exit;
    }

    //do other backend stuff here
?>

Using javascript for validation is only good in so far as it gives the user immediate feedback whether he did something wrong. However, a client can always see client side code like jQuery/Javascript, so for ultimate validation use php.