Antworten auf deine Fragen:
Neues Thema erstellen

Mit JavaScript values aus input arrays auslesen

didi01

Aktives Mitglied

Hallo zusammen,

ich habe mit PHP innerhalb einer for Schleife eine Checkbox und 2 Inputfelder erstellt. Nun möchte ich mit JavaScript erreichen, dass wenn beide Inputfelder in irgendeiner Zeile ausgefüllt sind und ich text2 verlasse, die Checkbox der entsprechenden Zeile automatisch gechecked ist

Anbei mal das komplette Script. Es dient mir nur um zu verstehen wie ich mit JavaScript diese Input Arrays auslesen kann, da ich mich mit JavaScript nicht besonders auskenne. Als Fehlermeldung bekomme ich folgende Zeile.

Die Eigenschaft "1" eines undefinierten oder Nullverweises kann nicht abgerufen werden.

Kann mir da bitte jemand auf die Sprünge helfen?

PHP:
<html>

<head>
    <title>Test</title>
</head>

<body>

<script type="text/javascript">
   
function autoFill() {
  for (var i = 1; i < 10; i++) {

      if(document.FORMULAR.text1[i].value != "" && document.FORMULAR.text2[i] != "") {
          document.FORMULAR.check[i].checked;
      }
     
  }
}

</script>

<form name="FORMULAR" action="fill_checkbox.php" method="get">

<table border="0" cellspacing="0" cellpadding="1">

<?php
for($i = 1; $i < 10; $i++) {
    ?>

    <tr>
        <td width="10"><input type="checkbox" name="check[<?php echo $i;?>]" value="<?php echo $i;?>"></td>
        <td width="50"><input type="text" name="text1[<?php echo $i;?>]"></td>
        <td width="50"><input type="text" name="text2[<?php echo $i;?>]" onblur="return autoFill();"></td>
    </tr>

<?php
}
?>

</table>

</form>
</body>
</html>

Vielen Dank im Voraus

Gruß
didi01
 

buerzel

Versuch macht kluch!

Teammitglied
Die Eigenschaft "1" eines undefinierten oder Nullverweises kann nicht abgerufen werden.

Vermute mal, das die Eigenschaft value für text1 gemeint ist, die du in der if-Abfrage verwendest. Eigentlich willst du doch den Inhalt prüfen und nicht den Wert. Oder verstehe ich das nicht richtig? :rolleyes:
 

didi01

Aktives Mitglied

Eigentlich willst du doch den Inhalt prüfen und nicht den Wert. Oder verstehe ich das nicht richtig?

Genau, ich möchte überprüfen ob in einer Zeile beide Inputfelder ausgefüllt sind. Wenn dies der Fall ist soll die Checkbox in der betreffenden Zeile gechecked sein.

Zur Verdeutlichung hier mal der Auszug aus der Konsole:

PHP:
</head>

<body>

<script type="text/javascript">
   
function autoFill() {
  for (var i = 1; i < 10; i++) {

      if(document.FORMULAR.text1[i].value != "" && document.FORMULAR.text2[i] != "") {
         x Die Eigenschaft "1" eines undefinierten oder Nullverweises kann nicht abgerufen werden.
          document.FORMULAR.check[i].checked;
      }

  }

}

</script>

Gruß
didi01
 

buerzel

Versuch macht kluch!

Teammitglied
Und warum fragst du dann einmal .value ab (text1) und einmal den Inhalt des Inputfeldes (text2) ohne die value-Eigenschaft?
 
Zuletzt bearbeitet:

didi01

Aktives Mitglied

ok, war ein Fehler von mir. Ich habe jetzt das Script geändert und für beide Inputfelder das .value abgefragt. Allerdings bekomme ich die gleiche Fehlermeldung.

Gruß
didi01
 

didi01

Aktives Mitglied

Ohne .value der gleiche Fehlerhinweis an gleicher Stelle.
Irgendwie erkennt er in der JavaScript Schleife nicht das der Name im Inputfeld ein Array ist.

Gruß
didi01
 

buerzel

Versuch macht kluch!

Teammitglied
Normalerweise beginnt die Zählung innerhalb eines Arrays mit 0.

PS: .value abzufragen, scheint korrekt zu sein.
 
Zuletzt bearbeitet:

Chris_EDI

PixelNik

document.FORMULAR.text1

Da kann nichts dabei raus kommen. das text1 kann er nicht interpretieren.
Ich würde auch bei der Benamsung der Input-Felder die eckigen Klammern weg lassen, das verwirrt eigentlich nur.
Des weiteren in der Funktion die Vars zusammensetzen und in folge dann diese verwenden.
Habe es kurz getestet. Irgendwo ist noch ein Fehler drin, aber als Ansatz sollte es dir weiter helfen.
PHP:
<html>

<head>
   <title>Test</title>
</head>

<body>

<script type="text/javascript">

function autoFill() {
for (var i = 1; i < 10; i++) {
    var text_1 = "text1"+i;
    var text_2 = "text2"+i;
 
    var field_checked = "check"+i;
    document.getElementById("demo").innerHTML = text_1;
   document.write
     if(document.FORMULAR.text_1.value != "" && document.FORMULAR.text_2 != "") {
         document.FORMULAR.field_checked.checked;
     }

}
}

</script>
<p id="demo"></p>

<form name="FORMULAR" action="fill_checkbox.php" method="get">

<table border="0" cellspacing="0" cellpadding="1">

<?php
for($i = 1; $i < 10; $i++) {
   ?>

   <tr>
       <td width="10"><input type="checkbox" name="check<?php echo $i;?>" value="<?php echo $i;?>"></td>
       <td width="50"><input type="text" name="text1<?php echo $i;?>"></td>
       <td width="50"><input type="text" name="text2<?php echo $i;?>" onblur="return autoFill()"></td>
   </tr>

<?php
}
?>

</table>

</form>
</body>
 

didi01

Aktives Mitglied

Hallo,
sorry das ich mich erst jetzt melde. Vielen Dank für Eure Vorschläge. Ich werde mir diese mal anschauen wenn ich dazu komme. Ich habe im Moment wenig Zeit.

Gruß
didi01
 
Bilder bitte hier hochladen und danach über das Bild-Icon (Direktlink vorher kopieren) platzieren.
Antworten auf deine Fragen:
Neues Thema erstellen

Willkommen auf PSD-Tutorials.de

In unseren Foren vernetzt du dich mit anderen Personen, um dich rund um die Themen Fotografie, Grafik, Gestaltung, Bildbearbeitung und 3D auszutauschen. Außerdem schalten wir für dich regelmäßig kostenlose Inhalte frei. Liebe Grüße senden dir die PSD-Gründer Stefan und Matthias Petri aus Waren an der Müritz. Hier erfährst du mehr über uns.

Stefan und Matthias Petri von PSD-Tutorials.de

Nächster neuer Gratisinhalt

03
Stunden
:
:
25
Minuten
:
:
19
Sekunden

Flatrate für Tutorials, Assets, Vorlagen

Statistik des Forums

Themen
118.564
Beiträge
1.538.064
Mitglieder
67.487
Neuestes Mitglied
MichaelSEivy
Oben