So blenden Sie ein HTML-input Feld mit javascript
Ich mich verstecken muss ein text-input Feld mit javascript. Ändern dessen type-Attribut auf hidden funktioniert nicht im IE (Sicherheitsproblem).
Was wäre der beste Weg, es zu tun?
Hinweis: Kein jQuery oder andere lib ausgegangen werden kann.
InformationsquelleAutor Nir | 2010-11-23
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich nehme an, Sie haben ein-und ausblenden das text-Feld dynamisch auf wechselnde Bedingungen in form, sonst würden Sie nur machen es zu einem
<input type="hidden"...
zu beginnen.Halten Sie Ihre code, der zeigt und verbirgt das Feld wie es ist, aber fangen auch die
onsubmit
Veranstaltung.In der submit-handler, Ihre text-Feld über
document.getElementById(...)
(oder durch den Zugriff aufdocument.forms[i]
) und überprüfen, um zu sehen, ob oder nicht ausgeblendet.Wenn es ist versteckt, erstellen Sie einen neuen DOM-Knoten für eine
<input type="hidden" ...>
Feld und fügen Sie diesen Knoten, um die form, wahrscheinlich übermyform.appendChild(...)
. Sie müssen geben Sie den Namen Ihres server-side-code erwartet. Kopieren Sie den Inhalt des versteckten Textfeld, in das neu erstellte type=hidden-Feld, dann wieder aus Ihrem submit-handler, so dass die standard-submit, um fortzufahren.Könnte man auch einfach un-hide-text-Feld auf "Absenden", aber man müsste, um es zu bewegen "off-screen" oder auch die Benutzer sehen würden, es wieder während der submit-Bearbeitung.
InformationsquelleAutor Stephen P
Versuchen, wickeln es in ein div-oder span und dann die Einstellung der display-style auf none, wenn Sie wollen, um es zu verstecken, und dann zu blockieren (wenn Sie ein div-Element) oder inline (wenn Sie einen span), wenn Sie wollen, es zu zeigen.
InformationsquelleAutor Dave
Dokument.myform.myelement.Stil.display = 'none'
funktioniert wie erwartet auch in Internet Explorer.
InformationsquelleAutor Free Consulting
Nur so können Sie es ändern, bevor Sie hängen Sie an das DOM. Sie können ein neues element und ersetzen Sie dann die aktuelle.
Blick auf replaceChild und createElement da Sie wollen, um manuelle DOM-scripting. Ich nehme an, Sie wissen, was zu tun ist.
EDIT: "Hidden" - Felder, so weit ich weiß, sind gesendet. Haben Sie geprüft, ob Sie sind? Und Sie können auch einfach tun
position:absolute; left:-9999em;
ausgleichen.position:absolute
- ja, aber dann bleibt es in der tab-Reihenfolge. Wenn Sie auch deaktivieren Sie es, die verhindern, dass die Tab, aber wird es noch geschickt bekommen auf "Absenden"?InformationsquelleAutor meder omuraliev