Werte aus Form prüfen
Bernd
- javascript
0 berdn0 Bernd0 nimble0 Bernd0 difficultchild0 wahsaga0 Bernd0 berdn
0 difficultchild0 wahsaga
0 difficultchild0 Bernd
Hallo!
Ich habe ein Formular, in dem mehrere Rows vorhanden sind, aber jede Row für sich im Moment einer Eingabe geprüft werden soll. Das haut auch hin, aber nur für die erste Row :-( Wie komme ich an die anderen Rows ran?
Vielen Dank, Bernd
<script type="text/javascript">
<!--
function check(form){
var menge = document.getElementById('menge').value;
if(isNaN(menge)){
alert("nur zahlen");
}
else{
calcSum();
}
}
function calcSum() {
var preis = document.getElementById('preis').value;
var menge = document.getElementById('menge').value;
var erg = preis * menge;
document.form1.summe.value = erg;
document.getElementById('erg').innerHTML = erg;
}
//-->
</script>
</head>
<form name="form1">
<input type="hidden" id="preis" name="preis" value="33.23">
<input onKeyUp="check();" type="text" id="menge" name="menge" value="" size="3"><span id="erg" name="erg"></span><br>
<input type="text" name="summe" value="0" readOnly><br>
<br><br>
<input type="hidden" id="preis" name="preis" value="4">
<input onKeyUp="check();" type="text" id="menge" name="menge" value="" size="3"><span id="erg" name="erg"></span><br>
<input type="text" name="summe" value="0" readOnly><br>
</form>
Hallo Bernd,
eine ID ist einzigartig!
Du verwendest aber id="menge" mehrfach.
Liebe Grüße,
Bernd
OK, lieber Namensvetter, das leuchtet ein. Ich habe es nun etwas umgebaut, mir ist aber immer noch nicht klar, wie ich nun den namen der Row übergeben soll.
<script type="text/javascript">
<!--
function check(menge){
var menge = document.getElementById('menge').value;
if(isNaN(menge)){
alert("Nur Ganzzahlen erlaubt!");
}
else{
calcSum();
}
}
function calcSum() {
var preis = document.getElementById('preis').value;
var menge = document.getElementById('menge').value;
var erg = preis * menge;
document.form1.summe.value = erg;
document.getElementById('erg').innerHTML = erg;
}
//-->
</script>
</head>
<form name="form1">
<input onKeyUp="check("33");" type="text" name="1" value="" size="3"><span id="erg" name="erg"></span><br>
<input type="text" name="summe" value="0" readOnly><br>
<br><br>
<input onKeyUp="check("4");" type="text" name="2" value="" size="3"><span id="erg" name="erg"></span><br>
<input type="text" name="summe" value="0" readOnly><br>
</form>
Hi
> <script type="text/javascript">
> <!--
> function check(form){
>
> var from = document.getElementById('form';
for (i=0; i<from.childNodes.length(); i++)
{
>
> if(isNaN(form.childNodes[i])){
> alert("Nur Ganzzahlen erlaubt!");
> }
> else{
> calcSum();
> }
}
> }
Klappere einfach alle felder ab... natürlich musst du dann die ID des Formulars übergeben... und möglichst keine anderen felder im Formular haben...
eine ander möglichkeit ist das durchgehen von gleichnamigen feldern mit document.getElementsByName('menge')[i]
THX
Ich raffe es einfacht nicht. Habe es versucht, nach deinem Vorschlag umzubasteln, aber jetzt gibt´s gar keine Ausgabe mehr, nicht mal einen Fehler ;-)
<script type="text/javascript">
<!--
function check(mutliplikator){
var menge = document.getElementById('menge')[i].value;
if(isNaN(menge)){
alert("Nur Ganzzahlen erlaubt!");
}
else{
calcSum();
}
}
function calcSum(mutliplikator) {
var menge = document.getElementById('menge')[i].value;
var erg = mutliplikator * menge;
document.form1.summe.value = erg;
document.getElementById('erg')[i].innerHTML = erg;
}
//-->
</script>
</head>
<form name="form1">
<input onKeyUp="check("33");" type="text" name="menge[1]" value="" size="3"><span id="erg" name="erg"></span><br>
<input type="text" name="summe[1]" value="0" readOnly><br>
<br><br>
<input onKeyUp="check("4");" type="text" name="menge[2]" value="" size="3"><span id="erg" name="erg"></span><br>
<input type="text" name="summe[2]" value="0" readOnly><br>
</form>
document.getElementById('menge')[i] ist nicht korrekt. der aufruf von getElementByID ist doch: document.getElementById()
Bei dir ist aber [i] ausserhalb der übergebenen ID. [i] gehört mit in die Klammer.
also müsste es wahrscheinlich so aussehen:
document.getElementById('menge'[i])
hi,
also müsste es wahrscheinlich so aussehen:
document.getElementById('menge'[i])
Nein.
Erstens müsste es wenn überhaupt 'menge[1]', 'menge[2]' sein - also zusammengesetzt 'menge['+i+']'.
Und zweitens haben die betreffenden Elemente gar keine solche ID, sondern lediglich einen Namen.
gruß,
wahsaga
Ich geb´s nun auf - trotzdem vielen Dank euch allen!
Hallo Bernd,
wer wird denn so schnell aufgeben ;-)
Und es ist immer schwierig eine Lösung vorzuschlagen oder einen Anhaltspunkt zu geben wenn man das Problem Unfeld nicht kennt.
Und in der Programmierung führen viele Wege nach Rom.
Hier mal auf die schnelle hingerotzt:
<script type="text/javascript">
function check(form){
var tmp = form.id.split("menge");
var myID = tmp[1];
menge = form.value;
if(isNaN(menge)){
alert("nur zahlen");
}
else{
calcSum(menge, myID);
}
}
function calcSum(menge , myID) {
var preis = document.getElementById('preis'+myID).value;
var erg = preis * menge;
document.getElementById('summe'+myID).value= erg;
document.getElementById('erg'+myID).innerHTML = erg;
}
</script>
</head>
<body>
<form name="form1">
<input type="hidden" id="preis1" value="33.23">
<input onKeyUp="check(this);" type="text" id="menge1" value="" size="3"><span id="erg1"></span><br>
<input type="text" id="summe1" name="summe1" value="0" readOnly><br>
<br><br>
<input type="hidden" id="preis2" value="4">
<input onKeyUp="check(this);" type="text" id="menge2" value="" size="3"><span id="erg2"></span><br>
<input type="text" id="summe2" name="summe2" value="0" readOnly><br>
</form>
Und vegess nicht auf zwei Nachkommastellen zu runden.
Hier schon tausendmal erfragt worden.
Liebe Grüße an den Namensvetter,
Bernd
also ich denke mal, dass ich schon recht habe
document.getElementsByName('menge')[i] müsste korrekt sein.
Ich habe dazu folgendes gefunden:
Array mit getElementsByName
dort geht es im Beispiel zwar um Checkboxen, aber das Prinzip, wie ein Array durchlaufen wird, sollte überall gleich sein.
Davon abgesehen halte ich deinen geposteten Link für einfacher @wahsaga
bei beichen
difficultchild
hi,
also ich denke mal, dass ich schon recht habe
document.getElementsByName('menge')[i] müsste korrekt sein.
Nein, in diesem Falle nicht.
Ich habe dazu folgendes gefunden:
Array mit getElementsByName
dort geht es im Beispiel zwar um Checkboxen, aber das Prinzip, wie ein Array durchlaufen wird, sollte überall gleich sein.
Dort haben die Checkboxen alle den selben Namen - in Bernds Beispielcode war das aber nicht der Fall, jeder Name war eindeutig.
gruß,
wahsaga
ich muss mich korrigieren ;-)
du hast in deinem Quelltext 'menge' als name und nicht als id, deshalb funktioniert es nicht.
du müsstest also getElementsByName('menge')[i] benutzen.
Sorry
mfg
difficultchild
hi,
du müsstest also getElementsByName('menge')[i] benutzen.
Nein, er hat auch keine Elemente mit dem Namen 'menge'.
Warum so kompliziert, wenn's auch einfach geht?
gruß,
wahsaga
elegante und einfache Lösung ;-)
bei beichen
difficultchild
Dann kommt ein "Objekt erforderlich"-Error.