Erweitern von Formularen mittels JavaScript
Kai
- javascript
0 Siechfred0 ziegenmelker0 kai
0 Siechfred0 kai0 ziegenmelker0 kai
Hi,
ich habe ein kleines Problem.
Und zwar habe ich eine Auswahlliste über die ich eine Kategorie auswählen kann. Und nun soll je nachdem welche Kategorie ausgewählt wurde eine gewisse Menge an Checkboxen zu sehen sein die dann zu der jeweiligen Auswahl passen (also nicht immer die gleichen). Das löse ich bisher mit Javascript. Die Anzeige funktioniert also. Nur leider wird dann die Auswahl der Checkboxen nicht übermittelt. Hat da evtl. jmd. eine Lösung?
Hier mal meine bisherigen Ansätze (bei Interesse schicke ich auch noch mehr Quelltexte):
der HTML-Abschnitt sieht so aus:
<tr>
<td>Kategorie:</td>
<td>
<select name="kategorie" onchange="fillArt(document.rezept_anlegen.kategorie.selectedIndex)">
<option value="Kategorie 1">Kategorie 1</option>
<option value="Kategorie 2">Kategorie 2</option>
</select>
</td>
</tr>
<tr>
<td>Art:</td>
<td>
<div id="artListe"></div>
</td>
</tr>
und in der Funktion fillArt() lösche ich dann erstmal alle Unterelemente von artListe und füge dann die neuen Elemente ein:
function addNewCheckbox(element, text)
{
var newCheckbox = document.createElement("input");
var name = document.createAttribute("name");
name.nodeValue = "art";
var type = document.createAttribute("type");
type.nodeValue = "checkbox";
newCheckbox.setAttributeNode(type);
var value = document.createAttribute("value");
value.nodeValue = text;
newCheckbox.setAttributeNode(value);
element.appendChild(newCheckbox);
var name = document.createTextNode(text);
element.appendChild(name);
}
tja wie gesagt die anzeige klappt, aber leider die Verarbeitung des Formulars dann nicht mehr...es sieht so aus als ob das Formular dann die Checkboxen nicht kennt.
Über Hilfe wäre ich sehr Dankbar.
Kai
Tag Kai.
Und zwar habe ich eine Auswahlliste über die ich eine Kategorie auswählen kann. Und nun soll je nachdem welche Kategorie ausgewählt wurde eine gewisse Menge an Checkboxen zu sehen sein die dann zu der jeweiligen Auswahl passen (also nicht immer die gleichen). Das löse ich bisher mit Javascript. Die Anzeige funktioniert also. Nur leider wird dann die Auswahl der Checkboxen nicht übermittelt. Hat da evtl. jmd. eine Lösung?
M.E. musst du via Javascript erzeugte Eingabefelder auch via Javascript verarbeiten lassen.
Siechfred
hi,
Die Anzeige funktioniert also. Nur leider wird dann die Auswahl der Checkboxen nicht übermittelt.
M.E. musst du via Javascript erzeugte Eingabefelder auch via Javascript verarbeiten lassen.
warum das?
wenn ein element _korrekt_ in den dokumentenbaum eingehängt wurde, ist es doch völlig unerheblich, ob es schon "von anfang an" im HTML-code vorhanden war, oder nachträglich hinzugeneriert wurde - das macht für den browser doch absolut keinen unterschied.
gruß,
wahsaga
Tag wahsaga.
M.E. musst du via Javascript erzeugte Eingabefelder auch via Javascript verarbeiten lassen.
warum das?
wenn ein element _korrekt_ in den dokumentenbaum eingehängt wurde, ist es doch völlig unerheblich, ob es schon "von anfang an" im HTML-code vorhanden war, oder nachträglich hinzugeneriert wurde - das macht für den browser doch absolut keinen unterschied.
Ja, du hast Recht, Irrtum meinerseits.
Siechfred
Hallo Kai,
function addNewCheckbox(element, text)
ist element dein Form-Objekt?
var name = document.createAttribute("name");
Wegen dem IE 5.5 ist es besser, "node.setAttributeNode()" zu verwenden.
tja wie gesagt die anzeige klappt, aber leider die Verarbeitung des Formulars dann nicht mehr...es sieht so aus als ob das Formular dann die Checkboxen nicht kennt.
Hast du mit dem Mozilla DOM Inspector überprüft, ob dein Input-Element auch korrekt im Form-Element eingehängt wurde?
cu,
ziegenmelker
Hallo Kai,
function addNewCheckbox(element, text)
ist element dein Form-Objekt?
nein element ist bei mir artListe (als die id des div-tags wo ich die checkboxen dann drunter hänge
var name = document.createAttribute("name");
Wegen dem IE 5.5 ist es besser, "node.setAttributeNode()" zu verwenden.
tja wie gesagt die anzeige klappt, aber leider die Verarbeitung des Formulars dann nicht mehr...es sieht so aus als ob das Formular dann die Checkboxen nicht kennt.
Hast du mit dem Mozilla DOM Inspector überprüft, ob dein Input-Element auch korrekt im Form-Element eingehängt wurde?
also laut dom-inspector hängt das alles an der richtigen stelle :)
Tag Kai.
Und zwar habe ich eine Auswahlliste über die ich eine Kategorie auswählen kann. Und nun soll je nachdem welche Kategorie ausgewählt wurde eine gewisse Menge an Checkboxen zu sehen sein die dann zu der jeweiligen Auswahl passen (also nicht immer die gleichen). Das löse ich bisher mit Javascript. Die Anzeige funktioniert also. Nur leider wird dann die Auswahl der Checkboxen nicht übermittelt. Hat da evtl. jmd. eine Lösung?
Es ließ mir keine Ruhe, und der Fehler ist eigentlich ganz simpel:
function addNewCheckbox(element, text)
[...]
var name = document.createAttribute("name");
name.nodeValue = "art";
Du musst das Attribut "name" auch setzen: newCheckbox.setAttributeNode(name)
sollte an dieser Stelle Wunder bewirken ;-)
Siechfred
Du musst das Attribut "name" auch setzen:
newCheckbox.setAttributeNode(name)
sollte an dieser Stelle Wunder bewirken ;-)
und ich such stundenlang wie ein irrer *grummel
besten dank Siechfred so werd ich mir wohl doch keine andere lösung ausdenken müssen
kai
Hallo Kai,
wegen dem IE 5 solltest du imho deine Funktion besser so schreiben:
function addNewCheckbox(element, text)
{
var newCheckbox = document.createElement("input");
newCheckBox.setAttribute("name","art");
//[...]
element.appendChild(newCheckbox);
//[...]
}
Siehe http://www.quirksmode.org/dom/w3c_core.html
cu,
ziegenmelker
Hallo Kai,
wegen dem IE 5 solltest du imho deine Funktion besser so schreiben:
function addNewCheckbox(element, text)
{
var newCheckbox = document.createElement("input");
newCheckBox.setAttribute("name","art");
//[...]
element.appendChild(newCheckbox);
//[...]
}
>
> Siehe <http://www.quirksmode.org/dom/w3c_core.html>
>
> cu,
> ziegenmelker
danke für den hinweis :)