jQuery Validate Seleccionar requerido

Estoy intentando validar el elemento de selección html utilizando el complemento jQuery Validate. Establecí la regla “requerida” en verdadera, pero siempre pasa la validación porque el índice cero se elige de manera predeterminada. ¿Hay alguna forma de definir el valor vacío que usa la regla requerida?

UPD. Ejemplo. Imagina que tenemos el siguiente control html:

 Choose... 1 2  

Quiero que el complemento Validación use el valor “predeterminado” como vacío.

¡Puedes escribir tu propia regla!

  // add the rule here $.validator.addMethod("valueNotEquals", function(value, element, arg){ return arg !== value; }, "Value must not equal arg."); // configure your validation $("form").validate({ rules: { SelectName: { valueNotEquals: "default" } }, messages: { SelectName: { valueNotEquals: "Please select an item!" } } }); 

Aquí se ha resumido una solución más fácil: Validar cuadro de selección

Haga que el valor esté vacío y agregue el atributo requerido

  

la solución más simple

simplemente configure el valor de la primera opción para vaciar value="" cadena value=""

  

y la regla required validación jquery will work

usar regla mínima

establecer el primer valor de opción en 0

 'selectName':{min:1} 

Solo necesita poner validate[required] como clase de este select y luego poner una opción con value = “”

por ejemplo:

  

No sé cómo fue el plugin al momento en que se hizo la pregunta (2010), pero hoy enfrenté el mismo problema y lo resolví de esta manera:

  1. Dale a tu etiqueta de selección un atributo de nombre. Por ejemplo en este caso

  2. En lugar de trabajar con el valor de atributo = “predeterminado” en la opción de etiqueta, deshabilite la opción predeterminada o establezca el valor = “” como lo sugiere Andrew Coats

    o

  3. Establecer la regla de validación del complemento

    $( "#YOUR_FORM_ID" ).validate({ rules: { myselect: { required: true } } });

    o

Obs: la solución de Andrew Coats funciona solo si tiene una sola selección en su formulario. Si desea que su solución funcione con más de una, seleccione agregar un atributo de nombre a su selección.

¡Espero eso ayude! 🙂

Aquí está el ejemplo simple y comprensible:

     

JQuery:

 jQuery(function() { jQuery('.error').hide(); // Hide Warning Label. jQuery("input[name=sub]").on("click", function() { var returnvalue; if(jQuery("select[name=subject]").val() == 0) { jQuery("label#select_error").show(); // show Warning jQuery("select#sel").focus(); // Focus the select box returnvalue=false; } return returnvalue; }); }); // you can change jQuery with $ 

La solución mencionada por @JMP funcionó en mi caso con una pequeña modificación: uso element.value lugar de value en addmethod .

 $.validator.addMethod("valueNotEquals", function(value, element, arg){ // I use element.value instead value here, value parameter was always null return arg != element.value; }, "Value must not equal arg."); // configure your validation $("form").validate({ rules: { SelectName: { valueNotEquals: "0" } }, messages: { SelectName: { valueNotEquals: "Please select an item!" } } }); 

Podría ser posible, que tengo un caso especial aquí, pero no rastreé la causa. Pero la solución de @JMP debería funcionar en casos normales.

Es simple, necesita obtener el valor del campo Seleccionar y no puede ser “predeterminado”.

 if($('select').val()=='default'){ alert('Please, choose an option'); return false; } 

cómo validar el seleccionar “qualifica” tiene 3 elegir

$ (document) .ready (function () {

 $('.validateForm').validate({ rules: { fullname: 'required', ragionesociale: 'required', partitaiva: 'required', recapitotelefonico: 'required', qualifica: 'required', email: { required: true, email: true }, }, submitHandler: function(form) { var fullname = $('#fullname').val(), ragionesociale = $('#ragionesociale').val(), partitaiva = $('#partitaiva').val(), email = $('#email').val(), recapitotelefonico = $('#recapitotelefonico').val(), qualifica = $('#qualifica').val(), dataString = 'fullname=' + fullname + '&ragionesociale=' + ragionesociale + '&partitaiva=' + partitaiva + '&email=' + email + '&recapitotelefonico=' + recapitotelefonico + '&qualifica=' + qualifica; $.ajax({ type: "POST", url: "util/sender.php", data: dataString, success: function() { window.location.replace("./thank-you-page.php"); } }); return false; } }); 

});

  html    **jQuery** $(document).ready(function() { if($("#sel").val() == null){ alert('select a value) } });