¿Cómo seleccionar todos los elementos del tipo menos con el que se está procesando Jquery?

publicado por: Anonymous

Tenemos esto:

_x000D_

_x000D_

$("input[type=text]").on("change", function () {_x000D_
_x000D_
    if ($(this).val() != "") {_x000D_
        //Deshabilitar (disabled) todos los otros input text que no sean este (this)_x000D_
    } else {_x000D_
        $("input[type=text]").prop("disabled", ""); _x000D_
    }_x000D_
});

_x000D_

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>_x000D_
<div>_x000D_
    <input type="text" />_x000D_
    <input type="text" />_x000D_
    <input type="text" />_x000D_
    <input type="text" />_x000D_
</div>_x000D_
<div>_x000D_
    <input type="text" />_x000D_
</div>_x000D_
<div>_x000D_
    <input type="text" />_x000D_
    <input type="text" />_x000D_
</div>

_x000D_

_x000D_

_x000D_

solución

Hay un método de jQuery llamado not. Lo que hace es eliminar el elemento o el selector que le pases de la selección. En tu caso podría ser así:

$("input[type='text']").not($(this)).prop("disabled", true);

Lo mejor es que cachees todos los inputs para que no estés seleccionándolos constantemente:

_x000D_

_x000D_

var inputs = $("input[type='text']");_x000D_
_x000D_
inputs.on("change", function() {_x000D_
_x000D_
  var el = $(this);_x000D_
_x000D_
  inputs.not(el).prop("disabled", el.val() === "");_x000D_
_x000D_
});

_x000D_

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>_x000D_
<div>_x000D_
  <input type="text" />_x000D_
  <input type="text" />_x000D_
  <input type="text" />_x000D_
  <input type="text" />_x000D_
</div>_x000D_
<div>_x000D_
  <input type="text" />_x000D_
</div>_x000D_
<div>_x000D_
  <input type="text" />_x000D_
  <input type="text" />_x000D_
</div>

_x000D_

_x000D_

_x000D_

Respondido por: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *