Twitter-Bootstrap-Auswahl nur schreibgeschützt in der Lage, Optionen zu ändern

Lesezeit: 3 Minuten

Ich habe eine Bootstrap-Auswahl mit readonly="true" aber ich kann die ausgewählte Option noch ändern.

Ich brauche die disabled="true" Verhalten, aber wenn ich dies verwende, wird die Auswahl nicht übermittelt.

Ich benötige eine Kombination der 2, die ausgewählte Option kann nicht geändert werden, aber die Auswahl muss übermittelt werden.

Ich könnte versteckte Felder verwenden, aber ich hatte auf eine einfachere Lösung gehofft.

  • Ich glaube nicht, dass irgendein ausgewähltes Ersatz-Plugin dieses Verhalten als Standard haben wird select Element unterstützt es nicht. Wenn Sie es brauchen, müssen Sie es höchstwahrscheinlich entweder selbst codieren oder, wie Sie sagen, das Element deaktivieren und eine versteckte Eingabe verwenden.

    – Rory McCrossan

    29. September 2015 um 14:40 Uhr

Ich bin auf ein ähnliches Problem gestoßen, und was ich tue, ist, wenn das Formular-onsubmit-Ereignis ausgelöst wird, die deaktivierten Attribute zu entfernen, da der Browser deaktivierte Attribute nicht an den Server zurücksendet.

$('form').submit(function () { $('[disabled]').removeAttr('disabled'); })

Wie Sie bereits erwähnt haben, besteht die einzige andere Option, die ich gefunden habe, darin, die Werte für versteckte Eingaben zu finden.

Benutzeravatar von BHoft
BHöft

Eine andere Möglichkeit könnte darin bestehen, einen Select-Ersatz mit Dropdowns zu verwenden, da es möglich sein sollte, das Dropdown zu deaktivieren, aber dennoch den Wert des versteckten Select-Elements zu übermitteln. Aber dann könnte man auch versteckte Felder verwenden…

Oder Sie fügen wirklich ein verborgenes Feld mit dem ausgewählten Wert hinzu, falls das Auswahlelement deaktiviert ist.

<input type="hidden" name="whatever">
<select name="whatever">

Wenn das versteckte Feld denselben Namen wie das Select hat, sollte der ausgewählte Wert des Selects den übermittelten Wert des versteckten Felds überschreiben (z. B. wenn das Select-Feld dynamisch mit js aktiviert wird). Und wenn die Auswahl deaktiviert ist, wird der Wert des verborgenen Felds gesendet. Ich bin mir nicht sicher, in welcher Reihenfolge zuerst gesendet wird.

$(document).ready(function(){$('select option:not(:selected)').attr('disabled',true);});

Diese Lösung sollte auch funktionieren (zumindest mit aktiviertem js). Es deaktiviert jede nicht ausgewählte Option. Daher wird die ausgewählte Option übermittelt und konnte nicht geändert werden.

Es gibt eine ähnliche und bereits beantwortete Frage html-form-readonly-select-tag-input

  • danke, ich habe deine letzte Lösung verwendet: $(‘select[readonly] Option:nicht(:ausgewählt)’).attr(‘deaktiviert’, wahr);

    – Ruben

    30. September 2015 um 7:50 Uhr

  • Können Sie auch Ihren Link zu dem anderen Beitrag hervorheben, die Antworten sind vollständiger als meine, vielleicht ist meine ein Duplikat?

    – Ruben

    30. September 2015 um 7:56 Uhr

Beim Laden der Seite schreibgeschützt hinzufügen

$('[readonly]').prop( "disabled", true );

Entfernen vor dem Absenden deaktiviert

$('[readonly]').prop( "disabled", false );

Hinweis aus Jquery-Dokument:

Ab jQuery 1.6 gibt die Methode .attr() für nicht gesetzte Attribute undefined zurück. Verwenden Sie die .prop()-Methode, um DOM-Eigenschaften wie den aktivierten, ausgewählten oder deaktivierten Status von Formularelementen abzurufen und zu ändern.

Ich bessere Lösung ist nicht deaktiviert verwenden. Verwenden Sie jquery, um die Aktion zum Öffnen der Auswahl mit zu anulieren

$(‘auswählen[readonly]’).on(“focus”, function(e){ e.preventDefault(); });

1431360cookie-checkTwitter-Bootstrap-Auswahl nur schreibgeschützt in der Lage, Optionen zu ändern

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy