¿Cómo realizar la validación para un grupo de botones de radio (se debe seleccionar un botón de radio) usando el complemento de validación jQuery?
¿Cómo realizar la validación para un grupo de botones de radio (se debe seleccionar un botón de radio) usando el complemento de validación jQuery?
Respuestas:
Con las versiones más recientes de jquery (creo que 1.3+), todo lo que tiene que hacer es configurar uno de los miembros del equipo de radio para que sea requerido y jquery se encargará del resto:
<input type="radio" name="myoptions" value="blue" class="required"> Blue<br />
<input type="radio" name="myoptions" value="red"> Red<br />
<input type="radio" name="myoptions" value="green"> Green
Lo anterior requeriría seleccionar al menos 1 de las 3 opciones de radio con el nombre de "mis opciones" antes de continuar.
¡La sugerencia de etiqueta de Mahes, por cierto, funciona maravillosamente!
focusInvalid: false
a las validate()
opciones evitará que se resalte el primer botón de opción.
use la siguiente regla para validar la selección del grupo de botones de radio
myRadioGroupName : {required :true}
myRadioGroupName es el valor que le ha dado al nombre de atributo
label
etiqueta del error, en realidad el complemento agrega automáticamente esta etiqueta de etiqueta de error.
También puedes usar esto:
<fieldset>
<input type="radio" name="myoptions[]" value="blue"> Blue<br />
<input type="radio" name="myoptions[]" value="red"> Red<br />
<input type="radio" name="myoptions[]" value="green"> Green<br />
<label for="myoptions[]" class="error" style="display:none;">Please choose one.</label>
</fieldset>
y simplemente agregue esta regla
rules: {
'myoptions[]':{ required:true }
}
Mencione cómo agregar reglas.
name="myoptions[]"
es un poco confuso ya que sugiere que se pueden devolver múltiples valores.
Según la respuesta de Brandon. Pero si está usando ASP.NET MVC que usa una validación discreta, puede agregar el atributo data-val al primero. También me gusta tener etiquetas para cada botón de radio para usabilidad.
<span class="field-validation-valid" data-valmsg-for="color" data-valmsg-replace="true"></span>
<p><input type="radio" name="color" id="red" value="R" data-val="true" data-val-required="Please choose one of these options:"/> <label for="red">Red</label></p>
<p><input type="radio" name="color" id="green" value="G"/> <label for="green">Green</label></p>
<p><input type="radio" name="color" id="blue" value="B"/> <label for="blue">Blue</label></p>
Otra forma de validar es así.
var $radio = $('input:radio[name="nameRadioButton"]');
$radio.addClass("validate[required]");
Espero que mi ejemplo te ayude
Yo tuve el mismo problema. Terminé escribiendo una función de resaltado y resaltado personalizado para el validador. Agregar esto a las opciones de validación debería agregar la clase de error al elemento y su etiqueta respectiva:
'highlight': function (element, errorClass, validClass) {
if($(element).attr('type') == 'radio'){
$(element.form).find("input[type=radio]").each(function(which){
$(element.form).find("label[for=" + this.id + "]").addClass(errorClass);
$(this).addClass(errorClass);
});
} else {
$(element.form).find("label[for=" + element.id + "]").addClass(errorClass);
$(element).addClass(errorClass);
}
},
'unhighlight': function (element, errorClass, validClass) {
if($(element).attr('type') == 'radio'){
$(element.form).find("input[type=radio]").each(function(which){
$(element.form).find("label[for=" + this.id + "]").removeClass(errorClass);
$(this).removeClass(errorClass);
});
}else {
$(element.form).find("label[for=" + element.id + "]").removeClass(errorClass);
$(element).removeClass(errorClass);
}
},
código para el botón de radio -
<div>
<span class="radio inline" style="margin-right: 10px;">@Html.RadioButton("Gender", "Female",false) Female</span>
<span class="radio inline" style="margin-right: 10px;">@Html.RadioButton("Gender", "Male",false) Male</span>
<div class='GenderValidation' style="color:#ee8929;"></div>
</div>
<input class="btn btn-primary" type="submit" value="Create" id="create"/>
y código jQuery
<script>
$(document).ready(function () {
$('#create').click(function(){
var gender=$('#Gender').val();
if ($("#Gender:checked").length == 0){
$('.GenderValidation').text("Gender is required.");
return false;
}
});
});
</script>
Pone el mensaje de error en la parte superior.
<style>
.radio-group{
position:relative; margin-top:40px;
}
#myoptions-error{
position:absolute;
top: -25px;
}
</style>
<div class="radio-group">
<input type="radio" name="myoptions" value="blue" class="required"> Blue<br />
<input type="radio" name="myoptions" value="red"> Red<br />
<input type="radio" name="myoptions" value="green"> Green </div>
</div><!-- end radio-group -->