Antworten:
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();
attr("disabled", true)
Sie verwenden sollten prop("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.
Wenn Sie alle Elemente oder bestimmte Elemente in einem versteckten übergeordneten Element deaktivieren möchten, können Sie verwenden
$("div").filter(":hidden").children("input[type='text']").attr("disabled", "disabled");
In diesem Beispiel http://jsfiddle.net/gKsTS/ werden alle Textfelder in einem versteckten Div deaktiviert
Wie wäre es mit:
$('#divID').children(":input").prop("disabled", true); // disable
und
$('#divID').children(":input").prop("disabled", false); // enable
Umschalten aller untergeordneten Eingaben (Auswahlmöglichkeiten, Kontrollkästchen, Eingaben, Textbereiche usw.) in einem ausgeblendeten Div.
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.
:input
anstelle von könneninput
Sie auch alleselect
undtextarea
Elemente einfach deaktivieren