sich gegenseitig beieinflussende Formulare
Ratfish
- javascript
Moin moin,
nachdem Ihr mir hier gestern mit meinen ersten JS-Gehversuchen geholfen habt, komme gleich wieder an:
In meinem Beispiel ändern sich die Radio-Buttons "ausrichtung", wenn ich Zahlen in die Textfelder eingebe, so weit so gut. Nun kann ich aber die Radiobuttons nicht mehr auswählen, weil onClick die alten Werte (H > B) den Klick überschreiben.
Wie bekomme ich es hin, dass sowohl die Textfelder die Radiobuttons beeinflussen, als auch anders herum?
function EigenesFormat () {
var Hoehe = document.bestellung.hoehe.value;
var Breite = document.bestellung.breite.value;
if (Hoehe > Breite) {
document.bestellung.ausrichtung[0].click ();
} else {
document.bestellung.ausrichtung[1].click ();
}
}
<form action="input_radio.htm" name="bestellung" onClick="EigenesFormat ()">
Breite:<input name="breite" type="text" size="3" maxlength="3">
Hoehe:<input name="hoehe" type="text" size="3" maxlength="3"><br />
<input class="button" type="button" value="Format berechnen" name="format_berechnen"><br />
<input type="radio" name="ausrichtung" value="hf">hochformat<br />
<input type="radio" name="ausrichtung" value="qf">querformat<br />
</form>
Geht OnClick in dieser Schreibweise überhaupt? Ich dachte das muss alles klein geschrieben sein. Welchen Browser nutzt du?
In meinem Beispiel ändern sich die Radio-Buttons "ausrichtung", wenn ich Zahlen in die Textfelder eingebe
Mal davon ausgegangen dass onclick beim Formular funktioniert, dann ändern die sich nicht beim eingeben, sondern wenn du irgendwo ins Formular klickst. Klar wird dann bei jedem Klick auf einen Radiobutton alles wieder überschrieben.
Nimm doch lieber onkeypress oder sowas, das dann nur auf die Eingabefelder reagiert.
Hallo!
Geht OnClick in dieser Schreibweise überhaupt? Ich dachte das muss alles klein geschrieben sein. Welchen Browser nutzt du?
HTML ist im Gegensatz zu JavaScript NICHT case-sensitive.
Liebe Grüße aus Norddeutschland.
Tach,
HTML ist im Gegensatz zu JavaScript NICHT case-sensitive.
XHTML allerdings schon und dafür gibt es im OP zumindest Anzeichen (<br />), auch wenn der Rest (Inline-Elemente direkt in form, nicht geschlossene inputs) eher für HTML als XHTML spricht.
mfg
Woodfighter
@@Jens Holzkämper:
nuqneH
auch wenn der Rest (Inline-Elemente direkt in form, nicht geschlossene inputs) eher für HTML als XHTML spricht.
Ersteres hat nichts mit HTML vs. XHTML zu tun.
Qapla'
Tach,
auch wenn der Rest (Inline-Elemente direkt in form, nicht geschlossene inputs) eher für HTML als XHTML spricht.
Ersteres hat nichts mit HTML vs. XHTML zu tun.
jetzt, wo du es sagst...
mfg
Woodfighter
<form action="input_radio.htm" name="bestellung" onClick="EigenesFormat ()">
Breite:<input name="breite" type="text" size="3" maxlength="3">
Hoehe:<input name="hoehe" type="text" size="3" maxlength="3"><br />
<input class="button" type="button" value="Format berechnen" name="format_berechnen"><br /><input type="radio" name="ausrichtung" value="hf">hochformat<br />
<input type="radio" name="ausrichtung" value="qf">querformat<br />
</form>
Du verwendest sehr ungewöhnliches Event-Handling und nutzt umständliche Methoden, um Formularfelder zu manipulieren.
Wenn du beim Eingeben von Text in ein Feld etwas tun willst, dann nutze das <http://de.selfhtml.org/javascript/sprache/eventhandler.htm#onchange@title=change>- und/oder das <http://de.selfhtml.org/javascript/sprache/eventhandler.htm#onkeypress@title=keypress>-Ereignis beim jeweiligen input-Element. Im Falle von Radio-Buttons kannst du ebenfalls change oder click - beim entsprechenden input-Element, versteht sich.
Das click-Ereignis auf Formularebene ist zu allgemein und ist dir hier zum Problem geworden. Damit kannst du nicht auseinanderhalten, was gerade geklickt wurde (technisch gesehen schon, aber du machst es nicht).
Wenn du ein Radio-Button setzen willst, dann kannst du einfach die <http://de.selfhtml.org/javascript/objekte/elements.htm#checked@title=checked>-Eigenschaft verwenden. Mit click() einen Klick zu simulieren ist »von hinten durch die Brust ins Auge«.
Grüße, Mathias