Ergebnis 1 bis 4 von 4
-
07-11-2006, 00:04 #1
Grünschnabel
- registriert
- 14-10-2006
- Beiträge
- 7
dynamisch mit DOM erstelltes dropdown übergibt immer nur 1. selected Wert
Hallo,
habe jetzt schon alles zu dropdown hier durchgeackert, aber ich finde nicht die Lösung für folgendes Problem:
Ich starte auf einer site eine Form mit einem simplem input Feld und nem Button. Sobald man etwas ins input Feld eingibt, wird der numerische Wert geprüft. Deshalb ist im html code des Buttons der Aufruf einer javascript Funktion eingebaut.HTML-Code:<ol><input type="text" name="zahlX" value="" size="4" onblur="JavaScript: pruefe(this); } " /> </ol>
Code:var Knoten = document.getElementsByTagName("ol")[0]; Knoten.removeChild(Knoten.firstChild); var myDropdown = document.createElement("select"); //Werte vorschlagen: //Wert vom Anwender durch Richtwert teilen, Rest abschneiden. var AnwenderValue = checkUnit2(e.value); //div emulieren //Ergebnis mit Richtwert multiplizieren; var tmpValue = AnwenderValue-(AnwenderValue % e.name).toFixed(2); newValue = (tmpValue/e.name); //(Ergebnis + 1)*Richtwert = choice1 var choiceOne = ((newValue + 1)*e.name).toFixed(2); //(Ergebnis ohne Änderung)*Richtwert = choice2 var choiceTwo = (newValue*e.name).toFixed(2); //(Ergebnis + 1)*Richtwert = choice3 var choiceThree = ((newValue - 1)*e.name).toFixed(2); if (choiceOne > 0.01) { var myOption1 = document.createElement("option"); var myText1 = document.createTextNode(choiceOne); myOption1.appendChild(myText1); myDropdown.appendChild(myOption1); } if (choiceTwo > 0.01) { var myOption2 = document.createElement("option"); var myText2 = document.createTextNode(choiceTwo); myOption2.appendChild(myText2); myDropdown.appendChild(myOption2); } if (choiceThree > 0.01) { var myOption3 = document.createElement("option"); var myText3 = document.createTextNode(choiceThree,choiceThree); myOption3.appendChild(myText3); myDropdown.appendChild(myOption3); } var wertDropdown = myDropdown.options[myDropdown.selectedIndex].value; myDropdown.id = "DD"; myDropdown.onClick=alert('change'+myDropdown.id); myDropdown.onChange=machWas(wertDropdown); myDropdown.onMouseOver=machWas(wertDropdown); Knoten.appendChild(myDropdown);
Beide Funktionen befinden sich in einer header.php Datei, die automatisch bei jedem Seitenaufruf eingebunden wird.
Der Button für das submit soll entsprechend der Auswahl im dropdown modifiziert werden:
HTML-Code:<input type="image" id="btt1" src="bild.jpg" alt="wennTextFehlt" title="abschicken" /></td>
Code:var Knoten200 = document.getElementById("btt1"); Knoten200.setAttribute ("onMouseOver","machWas('"+myDropdown.options[myDropdown.selectedIndex].value+"');");
In der machWas() Funktion steht folgendes:
Code:var Knoten200 = document.getElementById("btt1"); Knoten200.setAttribute("value",e);
Code:var dropDown = document.getElementById("DD"); Knoten200.setAttribute("value",dropDown.options[dropDown.selectedIndex].value);
Weiß einer was ich hier falsch mache?
Danke schonmal!
-
07-11-2006, 02:21 #2
AW: dynamisch mit DOM erstelltes dropdown übergibt immer nur 1. selected Wert
1. <input type="text" name="zahlX" value="" size="4" onblur="javascript
ruefe(this); }" /> :
- das attribut value ist überflüssig, wenn's leer ist
- ich würde onchange nehmen, denn ohne Eingabe macht alles andere keinen Sinn
- einem eventhandler braucht man kein "javascript:" zuzuweisen -> onchange="pruefe(this.value)";
- diese "}" in Deinem input ist falsch
- schreibe am Besten alle eventhandler klein, auch in Deinem folgenden javascript
2. optionen eines selects kann man ganz einfach so erzeugen:
SELFHTML: JavaScript / Objektreferenz / options
3.
- wenn var AnwenderValue mit Inhalt gefüllt wird durch checkUnit2(e.value);
dann existiert doch der Kindknoten / das input nicht mehr, richtig?
sammelst Du vor removeChild() dessen Wert in "e"?
4.Nö, die wird doch sowohl onchange, als auch bei jedem onmouseover aufgerufen, oder?
Nein, im Ernst, wenn Du myDropdown.onChange=machWas(wertDropdown); schreibst,
dann teilst Du myDropdown.onChange das Ergebnis des (sofortigen) Funktionsaufrufs machWas(wertDropdown) zu.
Schreibe statt dessen
myDropdown.onchange = machWas;
und beziehe Dich auf this.value in
function machWas(){
wertDropdown = this.value; // oder this.options[this.selectedIndex].value
}
Ich bin jetzt nicht alles durchgegangen und habe natürlich den ganzen Wust auch nicht testen können.
Es können also noch einpaar andere Schnitzer drin sein.Gruß
inco
···································································································· ········································································
Nur der Statistiker glaubt, mit dem Kopf im Ofen und den Füßen im Sektkühler müsste es ihm durchschnittlich gut gehen!
-
07-11-2006, 12:01 #3
Grünschnabel
- registriert
- 14-10-2006
- Beiträge
- 7
AW: dynamisch mit DOM erstelltes dropdown übergibt immer nur 1. selected Wert
Hi inco!
vieelen Dank für deine ausführliche Antwort!
- wenn var AnwenderValue mit Inhalt gefüllt wird durch checkUnit2(e.value);
dann existiert doch der Kindknoten / das input nicht mehr, richtig?
sammelst Du vor removeChild() dessen Wert in "e"?
HTML-Code:<ol><input type="text" name="{/literal}{$PROD_QTY}{literal}" value="" size="4" onblur="JavaScript: a = this.value; a= checkUnit2(a); if ((a % {/literal}{$PROD_QTY}{literal})==0) {return('korrekt');} if ((a % {/literal}{$PROD_QTY}{literal})!=0) {alert('achtung bla bla {/literal}{$PRODUCTS_MIN_QTY}{literal} '); pruefe(this); } " /> </ol>
- diese "}" in Deinem input ist falsch
Nö, die wird doch sowohl onchange, als auch bei jedem onmouseover aufgerufen, oder?
Nein, im Ernst, wenn Du myDropdown.onChange=machWas(wertDropdown); schreibst,
dann teilst Du myDropdown.onChange das Ergebnis des (sofortigen) Funktionsaufrufs machWas(wertDropdown) zu.
onchange wurde immer nur einmal aufgerufen...
Jetzt mit machWas ohne () jedesmal. Ist das der Grund?
In der machWas() setze ich ja das value Attribut des Knotens neu. Das geht aber immer nur beim ersten mal. (Jedenfalls zeigt firefox das so an.) Ich überprüfe das nochmal mit zend.
Danke nochmal!
-
07-11-2006, 12:18 #4
AW: dynamisch mit DOM erstelltes dropdown übergibt immer nur 1. selected Wert
Gruß
inco
···································································································· ········································································
Nur der Statistiker glaubt, mit dem Kopf im Ofen und den Füßen im Sektkühler müsste es ihm durchschnittlich gut gehen!
Ähnliche Themen
-
selected bei <option> mit DOM
Von Soapp im Forum JavaScriptAntworten: 1Letzter Beitrag: 29-09-2006, 00:33 -
ID Wert in "li" Tag dynamisch ändern ...
Von peet im Forum JavaScriptAntworten: 2Letzter Beitrag: 03-07-2006, 13:15 -
dynamisch erzeugt dropdowns geben wert teilweise nicht weiter
Von prof.dueruem im Forum JavaScriptAntworten: 1Letzter Beitrag: 29-04-2006, 02:00 -
Dropdown dynamisch füllen
Von ian_mcdeath im Forum JavaScriptAntworten: 13Letzter Beitrag: 15-01-2004, 11:22 -
Dropdown Wert vorselektiert
Von nosebear im Forum JavaScriptAntworten: 5Letzter Beitrag: 15-04-2003, 23:00
Lesezeichen