Stellen Sie sich vor, Sie haben ein Formular, in dem Sie die Sichtbarkeit mehrerer Felder wechseln. Und wenn das Feld nicht angezeigt wird, möchten Sie nicht, dass sein Wert angefordert wird.
Wie gehen Sie mit dieser Situation um?
Wenn Sie ein Formularelement auf deaktiviert setzen, wird es nicht mehr zum Server geleitet, z.
<input disabled="disabled" type="text" name="test"/>
In Javascript würde es ungefähr so viel bedeuten:
var inputs = document.getElementsByTagName('input');
for(var i = 0;i < inputs.length; i++) {
if(inputs[i].style.display == 'none') {
inputs[i].disabled = true;
}
}
document.forms[0].submit();
In jQuery:
$('form > input:hidden').attr("disabled",true);
$('form').submit();
:input
anstelle von könneninput
Sie auch alleselect
undtextarea
Elemente einfach deaktivierenattr("disabled", true)
Sie verwenden solltenprop("disabled", true)
api.jquery.com/prop.prop()
anstelle von.attr()
zu verwenden, um deaktivierte und aktivierte Eigenschaften zu erhalten UND festzulegen . Das Überprüfen und / oder Einstellen mit.attr()
wird in einigen Fällen zu unerwünschten Ergebnissen führen. Bitte lesen Sie die jQuery-Dokumentation, bevor Sie kommentieren, worauf sich yorch bezog.Sie können Javascript verwenden, um das deaktivierte Attribut festzulegen. Das Klickereignis "Senden" ist wahrscheinlich der beste Ort, um dies zu tun.
Ich würde jedoch davon abraten, dies überhaupt zu tun. Wenn möglich, sollten Sie Ihre Abfrage auf dem Server filtern. Dies wird zuverlässiger sein.
quelle
Wenn Sie alle Elemente oder bestimmte Elemente in einem versteckten übergeordneten Element deaktivieren möchten, können Sie verwenden
In diesem Beispiel http://jsfiddle.net/gKsTS/ werden alle Textfelder in einem versteckten Div deaktiviert
quelle
Wie wäre es mit:
und
Umschalten aller untergeordneten Eingaben (Auswahlmöglichkeiten, Kontrollkästchen, Eingaben, Textbereiche usw.) in einem ausgeblendeten Div.
quelle
Eine sehr einfache (aber nicht immer bequemste) Lösung besteht darin, das Attribut "Name" zu entfernen. Der Standard verlangt, dass Browser keine unbenannten Werte senden, und alle mir bekannten Browser halten sich an diese Regel.
quelle
Ich würde entweder den Wert aus der Eingabe entfernen oder das Eingabeobjekt aus dem DOM entfernen, damit es nicht existiert, um überhaupt gebucht zu werden.
quelle