Click function y dos selectores, ayuda

  • Autor Autor ImportasaMX
  • Fecha de inicio Fecha de inicio
I

ImportasaMX

Gamma
Verificado por Whatsapp
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Hola, estoy haciendo un formulario en el que dependiendo de dos selectores se requieran unos campos u otros, hice el siguiente código, solo que al parecer no funciona bien ya que el formulario solo toma en cuenta los últimos dos. ¿Alguna ayuda?


$(("#m") && ("#yes")).click(function() {
$("#uno").prop("required", true);
$("#uno").prop("disabled", false);
$("#dos").prop("required", false);
$("#dos").prop("disabled", true);
$("#tres").prop("required", false);
$("#tres").prop("disabled", true);
$("#cuatro").prop("required", false);
$("#cuatro").prop("disabled", true);
});

$(("#m") && ("#no")).click(function() {
$("#uno").prop("required", false);
$("#uno").prop("disabled", true);
$("#dos").prop("required", true);
$("#dos").prop("disabled", false);
$("#tres").prop("required", true);
$("#tres").prop("disabled", false);
$("#cuatro").prop("required", false);
$("#cuatro").prop("disabled", true);
});

$(("#f") && ("#yes")).click(function() {
$("#uno").prop("required", true);
$("#uno").prop("disabled", false);
$("#dos").prop("required", false);
$("#dos").prop("disabled", true);
$("#tres").prop("required", false);
$("#tres").prop("disabled", true);
$("#cuatro").prop("required", false);
$("#cuatro").prop("disabled", true);
});

$(("#f") && ("#no")).click(function() {
$("#uno").prop("required", false);
$("#uno").prop("disabled", true);
$("#dos").prop("required", true);
$("#dos").prop("disabled", false);
$("#tres").prop("required", true);
$("#tres").prop("disabled", false);
$("#cuatro").prop("required", true);
$("#cuatro").prop("disabled", false);
});
 
@ImportasaMX Si es jquery prueba con esto!
JavaScript:
$(document).on('click', '#m, #yes', function(){
 
Hice eso y si solo cambio los primeros dos (#m #yes y #m #no), sí sirve, pero si hago el cambio en los cuatro, ya no.

La única manera en que funciona es si pongo:
$(document).on('click', '#m, #yes', function(){
$(document).on('click', '#m, #no', function(){
$(("#f") && ("#yes")).click(function() {
$(("#f") && ("#no")).click(function() {

Pero algo me dice que hacer eso no es correcto.
 
Edito: No, tampoco funciona así ya que ahora los que se deshabilitan son los últimos dos. Y si pongo todos con "$(document).on('click', ", solo los últimos dos se habilitan.
 
Edito: No, tampoco funciona así ya que ahora los que se deshabilitan son los últimos dos. Y si pongo todos con "$(document).on('click', ", solo los últimos dos se habilitan.

Si no funciona entonce el porblema esta en otro lado bro!

JavaScript:
$(document).on('click', '#m, #yes', function(){
    $("#uno").prop("required", true);
    $("#uno").prop("disabled", false);
    $("#dos").prop("required", false);
    $("#dos").prop("disabled", true);
    $("#tres").prop("required", false);
    $("#tres").prop("disabled", true);
    $("#cuatro").prop("required", false);
    $("#cuatro").prop("disabled", true);
});

$(document).on('click', '#m, #no', function(){
    $("#uno").prop("required", false);
    $("#uno").prop("disabled", true);
    $("#dos").prop("required", true);
    $("#dos").prop("disabled", false);
    $("#tres").prop("required", true);
    $("#tres").prop("disabled", false);
    $("#cuatro").prop("required", false);
    $("#cuatro").prop("disabled", true);
});

$(document).on('click', '#f, #yes', function(){
    $("#uno").prop("required", true);
    $("#uno").prop("disabled", false);
    $("#dos").prop("required", false);
    $("#dos").prop("disabled", true);
    $("#tres").prop("required", false);
    $("#tres").prop("disabled", true);
    $("#cuatro").prop("required", false);
    $("#cuatro").prop("disabled", true);
});

$(document).on('click', '#f, #no', function(){
    $("#uno").prop("required", false);
    $("#uno").prop("disabled", true);
    $("#dos").prop("required", true);
    $("#dos").prop("disabled", false);
    $("#tres").prop("required", true);
    $("#tres").prop("disabled", false);
    $("#cuatro").prop("required", true);
    $("#cuatro").prop("disabled", false);
});
 
Creo que sí me sirve, solo que parcialmente.

Al entrar al formulario el id #m y el #yes ya tienen el atributo ":checked", y este código solo sirve si se da clic en esos botones, en lugar del "click" no hay alguna otra orden como "check" o "checked" que pueda utilizar?

Muchas gracias.
 
Le encontré otra "falla", ese código no "junta" los dos "id", yo necesito uno que cuando los dos "id" (por ejemplo el #m y #yes) estén ":checked" se activen y desactiven las input de ese código.

Es decir, necesito un código que diga: sí #m y #yes están seleccionadas todos estos input deberán ser requeridas o desactivados. Y el código que me proporcionaste es más un: sí #m O #yes son clickeados, todos estos input deberán ser requeridos o desactivos.
 
¿Alguien que pueda ayudar? 😀😀
 
¿Alguien que pueda ayudar? 😀😀

No estoy seguro si entiendo lo que quieres hacer, pero supongo que quieres comprobar si está seleccionado el cheked, al hacer click no?

JavaScript:
$(document).on('click', '#f, #yes',function() {
    if( $(this).is(':checked') ){
        // Hacer algo si el checkbox ha sido seleccionado
      
       $("#uno").prop("required", true);
       $("#uno").prop("disabled", false);
       $("#dos").prop("required", false);
      $("#dos").prop("disabled", true);
       ///  ........
    }
});


Tambien esta esta funcion cuando se detecta un cambio en el check
JavaScript:
$(".micheckbox").on( 'change', function() {
    if( $(this).is(':checked') ) {
        // Hacer algo si el checkbox ha sido seleccionado
        
    } else {
        // Hacer algo si el checkbox ha sido deseleccionado
        
    }
});
 
Hola, stron, gracias por responder. Sí, básicamente algo así, solo que necesito alguna manera de que: solo cuando se cumplan ambos requisitos (que ambos id estén checked) se desactiven/activen los campos correspondientes (si no, no), porque con las comas (,) entre id (#f, #yes) entiendo que solo está ordenando que se activen o desactiven cuando alguno de los dos esté "checked".

Necesitaría algo así ("#f") && ("#yes"), que indicara que tanto #f como #yes deben seleccionarse para que esa orden se active.
 
No puedes hacer un && en el onclick, por que no es posible clickear dos elementos al mismo tiempo, solo puedes comprobar si se clickeo uno de ellos, y verificar si el otro ya esta en checked tambien.

JavaScript:
$(document).on('click', '#f, #yes',function() {
    if( $('#f').is(':checked') && $('#yes').is(':checked')){
        /// .......
    }
});
 
Vaya, creo que ya, muchísimas gracias a ambos por la ayuda!!! Ya con esto doy por terminado mi formulario.