it-swarm.com.de

Hinzufügen eines deaktivierten Attributs zum Eingabeelement mit Javascript

Ich habe ein Eingabefeld und möchte, dass es deaktiviert und gleichzeitig ausgeblendet wird, um Probleme beim Portieren meines Formulars zu vermeiden.

Bisher habe ich den folgenden Code, um meine Eingabe zu verbergen:

$(".shownextrow").click(function() { 
    $(this).closest("tr").next().show().find('.longboxsmall').hide();
});

Dies ist die Eingabe, die als Ergebnis ausgeblendet wird:

<input class="longboxsmall" type="text" />

Wie kann ich das deaktivierte Attribut auch zur Eingabe hinzufügen?

121
user342391

$("input").attr("disabled", true); ab ... ich weiß nicht mehr.

Es ist Dezember 2013 und ich habe wirklich keine Ahnung, was ich dir sagen soll.

Zuerst war es immer .attr(), dann war es immer .prop(), also bin ich hierher zurückgekommen, habe die Antwort aktualisiert und genauer gemacht.

Dann, ein Jahr später, änderte jQuery erneut seine Meinung und ich möchte nicht einmal mehr darüber nachdenken.

Lange Rede kurzer Sinn, ab sofort ist dies die beste Antwort: "Sie können beide verwenden ... aber es kommt darauf an."

Sie sollten stattdessen diese Antwort lesen: https://stackoverflow.com/a/5876747/25749

Die Versionshinweise für diese Änderung finden Sie hier:

Weder .attr () noch .prop () sollten zum Abrufen/Setzen von Werten verwendet werden. Verwenden Sie stattdessen die .val () -Methode (obwohl .attr ("value", "somevalue") weiterhin funktioniert, wie vor 1.6).

Zusammenfassung der bevorzugten Verwendung

Die .prop () -Methode sollte für boolesche Attribute/Eigenschaften und für Eigenschaften verwendet werden, die in HTML nicht vorhanden sind (z. B. window.location). Alle anderen Attribute (die Sie im HTML-Code sehen können) können und sollten weiterhin mit der .attr () -Methode bearbeitet werden.

Oder mit anderen Worten:

".prop = nicht dokumentiertes Zeug"

".attr" = Dokumente

... ...

Mögen wir alle hier eine Lektion über die API-Stabilität lernen ...

270
Incognito

Arbeitscode aus meinen Quellen:

HTML-WELT

<select name="select_from" disabled>...</select>

JS WELT

var from = jQuery('select[name=select_from]');

//add disabled
from.attr('disabled', 'disabled');



//remove it
from.removeAttr("disabled");
44
Mircea Stanciu

Wenn Sie jQuery verwenden, gibt es verschiedene Möglichkeiten, das Attribut disabled festzulegen.

var $element = $(...);
    $element.prop('disabled', true);
    $element.attr('disabled', true); 

    // The following do not require jQuery
    $element.get(0).disabled = true;
    $element.get(0).setAttribute('disabled', true);
    $element[0].disabled = true;
    $element[0].setAttribute('disabled', true);
15
iConnor

Sie können das DOM-Element abrufen und die Eigenschaft disabled direkt festlegen.

$(".shownextrow").click(function() { 
  $(this).closest("tr").next().show()
          .find('.longboxsmall').hide()[0].disabled = 'disabled';
});

oder wenn es mehr als eine gibt, können Sie each() verwenden, um alle festzulegen:

$(".shownextrow").click(function() { 
  $(this).closest("tr").next().show()
          .find('.longboxsmall').each(function() {
               this.style.display = 'none';
               this.disabled = 'disabled';
          });
});
12
user113716
$(element).prop('disabled', true); //true|disabled will work on all
$(element).attr('disabled', true); 
element.disabled = true;
element.setAttribute('disabled', true);

Alle oben genannten sind vollkommen gültige Lösungen. Wählen Sie diejenige, die Ihren Bedürfnissen am besten entspricht.

10
user1596138

Verwenden Sie einfach die Methode attr() von jQuery

$(this).closest("tr").next().show().find('.longboxsmall').attr('disabled', 'disabled');
5
Gabe