jQuery validate plugin: valor en varios rangos

Utilizo el complemento jQuery Validate para validar un formulario y quiero que el valor sea inferior a 26 o superior a 30. ¿Cómo puedo hacer esto?

Lo intenté:

forum_id: { required: true, range: [0,26], range:[40,100] }

pero luego solo toma el último rango, por lo que si el valor está por debajo de 40, arroja un error incluso si está por debajo de 26 también.

¿Alguna sugerencia?

preguntado el 09 de enero de 11 a las 06:01

1 Respuestas

No parece haber una forma de hacer esto usando el complemento en sí, pero varias personas han sugerido usar una expresión regular para validar rangos.

Este recurso demuestra cómo agregar un método de expresiones regulares al validador:

jQuery validate: ¿Cómo agregar una regla para la validación de expresiones regulares?

También llevé esto un paso más allá y escribí un complemento para manejar múltiples rangos:

 $(document).ready(function() {

 $.validator.addMethod(
    "ranges",
     function(value, element, ranges) {
        var noUpperBound = false;
        var valid = false;
        for(var i=0; i<ranges.length; i++) {
            if(ranges[i].length == 1) { 
                noUpperBound = true;
            }
            if(value >= ranges[i][0] && (value <= ranges[i][1] || noUpperBound)) {
                valid = true;
                break;
            }            
        }

        return this.optional(element) || valid;
    },
    "Please check your input."
 );


 $("#myform").validate({
     submitHandler: function(form) {
        if(form && form.submit) form.submit();
     } 
 });

 // range must be between 0 to 25 OR greater than 30
   // represented as an array of size-2 arrays.
 $("#age").rules('add', { ranges: [ [0,25], [31] ] });


 <form id="myform" action="#">
    <span>age</span><input type="text" id="age" name="age" />
    <input type="submit" name="submit" value="submit" />
 </form>

contestado el 23 de mayo de 17 a las 15:05

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.