Adicionar atributos a un campo dependiendo del radiobutton seleccionado

Tengo dos radio button para elegir que campo debería ser obligatorio

Dependiendo del radio button que se escoja un campo pasara a ser obligatorio y el otro seguirá sin serlo

1 Respuesta

Respuesta
2

Hola ostheneo,

Si te he entendido bien tenemos los dos radios y dos inputs y cada radio obliga a que el campo esté relleno al hacer el submit, ¿es así?

<form>
  <input type="radio" name="obligatorio" value="#1"></input>
  <input type="text" id="1" name="campo1"></input>
  <input type="radio" name="obligatorio" value="#2">Female
  <input type="text" id="2" name="campo2"></input>
  <input type="submit" onclick="validacion()" />
</form>

Al hacer click en el botón deberíamos comprobar el radio marcado y comprobar si su input relacionado tiene valor.

Si te fijas he puesto como value en los radios el selector por id del input relacionado, esto nos harça más fácil la vida para comprobarlo mediante jquery.

function validation() {
    var inputId = $('input:radio[name=obligatorio]:checked').val();
    if (!$(inputId).val()) {
        alert('el campo ' + $(inputId).attr("name") + ' es obligatorio');
        return false;
    }
    else {
        $("form").submit();
    }
}

Hola ostheneo, si la respuesta te ha sido de utilidad no olvides valorarla :)

Algo parecido pero debeira ser algo así

<input type="radio" name="obligatorio" value="#1" onclick="mifuncion">

<input type="radio" name="obligatorio" value="#2" onclick="mifuncion">

<input type="text" id="1" name="campo1">

<input type="text" id="2" name="campo2">

mifuncion{

variables = radio.

if(radio = 1){

    campo1 - agregar atributo - obligatorio

   if (campo2 = tiene el atributo obligatorio){quitar atributo- campo 2}

}

if(radio = 2){

    campo2 - agregar atributo - obligatorio

   if (campo1 = tiene el atributo obligatorio){quitar atributo- campo 1}

}

}

La idea seria esa solo que no se como escribirlo en código javascript

<html>
<head>
<script type="text/javascript" src="http://code.jquery.com/jquery-1.11.0.js"></script>
</head>
<body>
<input type="radio" name="obligatorio" value="1">
<input type="radio" name="obligatorio" value="2">
<input type="text" id="1" name="campo1">
<input type="text" id="2" name="campo2">
<script type="text/javascript">
    $(document).ready(function() {
      $('input:radio[name=obligatorio]').change(function () {
        var requiredInputId = $(this).val();
        var inputs = $('input:text');
        $.each(inputs, function (i, input) {
            var $input = $(input);
            if ($input.attr("id") == requiredInputId) {
                $input.attr("data-required", "true");
            } else {
                $input.attr("data-required", "false");
            }
        });
    });  
});
</script>
</body>
</html>

Entiendo que cuando te refieres al atributo "obligatorio" es al "data-required" que se usa en jquery-validation no?

Si es así he modificado un poco el código para que funcione. Ahora en los radios guardamos el id tal cual y, cuando el valor cambia, recorremos todos los inputs de tipo "text" que tengas para quitar a todos el "data-required" y solo dejarselo al que está marcado en el radio.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas