Considere el código jquery a continuación, una vez que se hace clic en input1 input2 se elimina el evento de controlador de clics. Cuando se hace clic en input3 y se vuelve a habilitar el elemento, ¿qué sucede con el controlador de clics? Algunas pruebas que he estado haciendo indican que ya no existe. Si se ha eliminado, ¿cómo lo vuelvo a habilitar en la situación a continuación?

<input id="input1"> 
<input id="input2">
<input id="input3">
$("#input1").on('click', function() {
  $("#input2").prop('disabled', 'true');
  // do something
});
$("#input3").on('click', function() {
  $("#input2").prop('disabled', 'false');
});
$("#input2").on('click', function() {
  // do something
});
0
user3247608 3 sep. 2014 a las 15:51

2 respuestas

La mejor respuesta

Su uso de prop es incorrecto. Toma un valor booleano para la propiedad disabled. El uso de las cadenas "true" y "false" siempre evaluará a true.

$("#input1").on('click', function() {
  $("#input2").prop('disabled', true);
  // do something
});
$("#input3").on('click', function() {
  $("#input2").prop('disabled', false);
});
$("#input2").on('click', function() {
  // do something
});

jsFiddle

1
CodingIntrigue 3 sep. 2014 a las 11:57

Use como a continuación

  $("#input1").on('click', function() {
      $("#input2").prop('disabled', 'disabled');
      // do something
  });
  $("#input3").on('click', function() {
      $("#input2").removeAttr('disabled');
  });
  $("#input2").on('click', function() {
    // do something
  });
0
Amit 3 sep. 2014 a las 11:54