Forenindex » Programmierung/Entwicklung » JavaScript » Formularabfageprobleme unter dem IE

Formularabfageprobleme unter dem IE

Anonym
Beiträge gesamt: 22827

28. Mai 2004, 11:56
Bewertung:

gelesen: 454

Beitrag als Lesezeichen
     Hallihallo,

ich habe ein Problem mit einem JavaScript. Das unten aufgelistete JavaScript läuft unter Opera und Mozilla tadellos. Allerdnigs bereitet es unter dem IE oder auch Konqueror Probleme, sprich es funktioniert einfach nicht. Ich habe schon einiges Versucht, kann mir irgendjemand einen Tipp geben? Ich glaube er kommt mit der Variblenabfrage window.document.bestellformular.bestellung5.value nicht zurecht, denn wenn man sich das ausgeben lässt ist es unter dem IE ein leerer String. Bei Mozilla hingegen halt die übergebene Zahl aus dem Formular. Ich hatte bereits in ein Paar anderen Foren geschaut, dort war unter anderem eine Version in Form von
document.bestellformular.bestellung5[document.bestellformular.bestellung5.selectedIndex].value
beschrieben wurden, aber auch das geht nicht, obwohl es als allbrowsertauglich beschrieben wurde.
Bitte helft mir, der Kram ist für ein e-commerce-projekt und deshalb recht wichtig für mich.

Vielen Dank im Vorraus

Killer

P.S.: Hier das Script

<html><head><title>Login</title><!-- Summe der Karten berechnen -->


<script type="text/javascript">
<!--
function sum()
{
var sum=0;
if (window.document.bestellformular.bestellung5.value != "-" && window.document.bestellformular.bestellung10.value != "-")sum=window.document.bestellformular.bestellung5.value * 5 + window.document.bestellformular.bestellung10.value * 10;
if (window.document.bestellformular.bestellung5.value == "-" && window.document.bestellformular.bestellung10.value != "-")sum=window.document.bestellformular.bestellung10.value * 10;
if (window.document.bestellformular.bestellung5.value != "-" && window.document.bestellformular.bestellung10.value == "-")sum=window.document.bestellformular.bestellung5.value * 5;
if (window.document.bestellformular.bestellung5.value == "-" && window.document.bestellformular.bestellung10.value == "-")sum=0;

if (sum>=50)sum=sum*0.95;

window.document.bestellformular.summe.value=sum+' euro';
}

function keinAccount()
{
alert("Sorry, but you have not an account yet!!!");
}

//-->
</script></head>

<body onload="sum()">

<center>

<form method="post" action="./login.php" name="bestellformular">
<table>
<tbody><tr><td><div align="right">5 €</div></td><td>
<select name="bestellung5" size="1" type="button" value="calc" onmouseup="javascript:sum()" onkeyup="javascript:sum()"><option selected="selected">-</option><option>1</option><option>2</option><option>3</option><option>4</option><option>5</option><option>6</option><option>7</option><option>8</option><option>9</option><option>10</option></select></td></tr>

<tr><td><div align="right">10 €</div></td><td>
<select name="bestellung10" size="1" type="button" value="calc" onmouseup="javascript:sum()" onkeyup="sum()"><option selected="selected">-</option><option>1</option><option>2</option><option>3</option><option>4</option><option>5</option><option>6</option><option>7</option><option>8</option><option>9</option><option>10</option></select></td></tr>
<tr><td>sum:</td>
<!-- Ausgabe der Summe nach Knopfdruck -->
<td><input type="text" name="summe" size="7" readonly="readonly"></td></tr>
</tbody>
</form>
</center>
</center>
</body>
</html>

Formularabfageprobleme unter dem IE

Markus Walker
Beiträge gesamt: 494

28. Mai 2004, 19:40
Bewertung:

gelesen: 454

Beitrag als Lesezeichen
Hallihallo Anonymus

Da sind mindestens zwei Fehler eingebaut.

1. Das <select> Tag beinhaltet weder einen onmouseup noch einen onkeyup Event, siehe hierzu: http://selfhtml.teamone.de/...che/eventhandler.htm
oder offizieller hier: http://www.w3.org/...rms.html#edef-SELECT

2. Offensichtlich hält sich MSIE hier nicht genau an die HTML Spezifikation. Deswegen ist das value Property des jeweiligen Feldes leer, womit natürlich nicht weiter gerechnet werden kann. Nach HTML 4 ist gilt: «This attribute specifies the initial value of the control. If this attribute is not set, the initial value is set to the contents of the OPTION element.»
siehe http://www.w3.org/...rms.html#edef-OPTION


Die Lösung besteht darin, dass
a) mit dem onchange event gearbeitet wird (onfocus und onblur scheinen bei der gezeigten Anwendung nicht empfehlenswert)
und
b) dass jedem <option> Tag ein passendes Attribut value zugewiesen wird.
z.B. <option value=5>5</option>

HTH

Formularabfageprobleme unter dem IE

Anonym
Beiträge gesamt: 22827

29. Mai 2004, 12:45
Bewertung:

gelesen: 454

Beitrag als Lesezeichen
Vielen Dank,

das funktioniert. Alternativ habe ich auch noch gesehen, dass man dass über "...options[1].selected" abrufen kann.

OK danke nochmal.
Gruß Der Killer