hilfdirselbst.ch
Facebook Twitter gamper-media
"Funktioniert nicht" ist keine hinreichende Fehlerbeschreibung.
Anonym
Beiträge: 22827
28. Mai 2004, 11:56
Beitrag #1 von 3
Bewertung:
(353 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Formularabfageprobleme unter dem IE


     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> Top
 
X
Markus Walker  M 
Beiträge: 494
28. Mai 2004, 19:40
Beitrag #2 von 3
Beitrag ID: #87902
Bewertung:
(353 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Formularabfageprobleme unter dem IE


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
als Antwort auf: [#87806] Top
 
Anonym
Beiträge: 22827
29. Mai 2004, 12:45
Beitrag #3 von 3
Beitrag ID: #87974
Bewertung:
(353 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Formularabfageprobleme unter dem IE


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
als Antwort auf: [#87806] Top