Betrachten Sie die folgende einfache Form:Javascript/HTML-Formularfeld Benennung Ausgabe
<form method="GET" action="handle.php">
<input type="hidden" name="action" value="search">
</form>
Formular Vorlage von Javascript (iui) in einem Ajax-Aufruf durchgeführt wird. Alle Felder werden ordnungsgemäß aus dem Formular gesammelt. Javascript möchte dann den Ajax-Aufruf an "form.action" senden.
Hier beginnt mein Problem. Das Objekt Formular ist vom Typ HTMLFormElement. Die Aktion Eigenschaft des Formulars soll vom Typ string sein und "handle.php" enthalten. Nach einigen Stunden Debugging habe ich festgestellt, dass form.action jetzt vom Typ HTMLInputElement ist.
Meine Frage: Ist das richtige Javascript-Verhalten? Ich hätte nie gedacht, dass ein Formularfeld mit dem Namen eines Formularattributs definiert würde. In der Zwischenzeit habe ich das Problem gelöst, indem ich mein Feld anders benannt habe.
Vielen Dank im Voraus für jede Beratung ...
eine einfache Möglichkeit, mein Problem darstellen kann gefunden. Zuerst wird die Form mit dem Problem:
<form action="test.php">
<input type="hidden" name="action" value="test">
<input type="button" onclick="alert(this.form.action);">
</form>
Und die Form, die richtige ist:
<form action="test.php">
<input type="hidden" name="NOT_AN_ATTRIBUTE_NAME" value="test">
<input type="button" onclick="alert(this.form.action);">
</form>
Im ersten, die Pop-up-Staaten "[object Htmlinputelement]", in der zweiten: „http://localhost/test.php ".
Könnten Sie bitte auch den JavaScript-Code hinzufügen – sunn0
Ich weiß nicht, ob das für JS richtig ist, aber es scheint in einer Weise, die Sie beschrieben, ist das große Problem, Eingabe-Namen von Aktion zu einem anderen Namen zu ändern? – Chris
@Chris: offensichtlich habe ich es schon gelöst, indem ich mein Feld umbenannt habe. Aber das Problem bleibt beim Buchen von Formularen mit Javascript in Ajax-Aufrufen. Formularfelder dürfen nicht den gleichen Namen wie Formularattribute haben. – djBo