mehrdimensionale Arrays validieren

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • mehrdimensionale Arrays validieren

    mit nachfolgendem Sript überprüfe ich erfolgreich ein Datum.

    PHP-Code:
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <
    html>
    <
    head>
    <
    title>test</title>
    <
    meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    <
    script language="JavaScript" type="text/JavaScript">
    <!--
    function 
    validate_form() {
      if(
    document.forms['update'].elements['datum[d]'].value!="" 
      
    || document.forms['update'].elements['datum[m]'].value!="" 
      
    || document.forms['update'].elements['datum[Y]'].value!=""
      {
      var 
    TAG parseInt(document.forms['update'].elements['datum[d]'].value,10);
      var 
    MONAT parseInt(document.forms['update'].elements['datum[m]'].value,10);
      var 
    JAHR parseInt(document.forms['update'].elements['datum[Y]'].value,10);
      if (
    TAG >= && TAG 32 && MONAT >= && MONAT 13 && JAHR >= 1900 && JAHR <= 2100) {
      return 
    true;
      } else if (
    TAG == 00 && MONAT == 00 && JAHR == 0000) {
      return 
    true;  
      } else {
      
    alert("Bitte eine korrekte Datumsangabe!");
      return 
    false;
      }
      }
    // end of function
    </script>
    </
    head>
    <
    body>
    <
    form action="#" method="post" name="update" onSubmit="return validate_form();">
    <
    input type="text" name="datum[d]" style="width: 25px;" value="">
    <
    input type="text" name="datum[m]" style="width: 25px;" value="">
    <
    input type="text" name="datum[Y]" style="width: 40px;" value="">
    <
    br>
    <
    br>
    <
    input name="submit" type="submit" style="width: 95px;" value="Best&auml;tigen">
    </
    form>
    </
    body>
    </
    html
    nun kommen aber mehrere Datumsfelder in das Formular hinzu:

    und aus
    PHP-Code:
    <input type="text" name="datum[d]" style="width: 25px;" value="">
    <
    input type="text" name="datum[m]" style="width: 25px;" value="">
    <
    input type="text" name="datum[Y]" style="width: 40px;" value=""
    wird:
    PHP-Code:
    <input type="text" name="datum[d][1]" style="width: 25px;" value="">
    <
    input type="text" name="datum[m][1]" style="width: 25px;" value="">
    <
    input type="text" name="datum[Y][1]" style="width: 40px;" value="">
    <
    br>
    <
    br>
    <
    input type="text" name="datum[d][2]" style="width: 25px;" value="">
    <
    input type="text" name="datum[m][2]" style="width: 25px;" value="">
    <
    input type="text" name="datum[Y][2]" style="width: 40px;" value="">
    <
    br>
    <
    br>

    usw... 
    jetzt funktioniert aber die function validate_form() nicht mehr.
    Der Fehler liegt eindeutig an dem Ausbau des Arrays datum[] => datum[][]
    leider schaffe ich es nicht die function dementsprechend anzupassen...

    hat jemand einen kleinen tip für mich,
    meine javascriptkenntnisse sind hier ein wenig überfordert.

    thx, crisdoe
    Zuletzt geändert von crisdoe; 22.04.2004, 19:34.

  • #2
    was ist jetzt so schwierig? über
    Code:
    document.forms['update'].elements['datum[d][1]'].value;
    kannst du es ansprechen oder so
    Code:
    document.forms['update'].elements['datum[d]['+i+']'].value;
    innerhalb einer schleife.

    allerdings wäre es imho sinniger, die werte über selects auswählen zu lassen und per php zu validieren.
    Kissolino.com

    Kommentar


    • #3
      PHP-Code:
      document.forms['update'].elements['datum[d][1]'].value
      PHP-Code:
      document.forms['update'].elements['datum[d]['+i+']'].value
      aha, nur leider sehe ich da noch ein problem denn
      in der Anwendung wird es z.B.: auch so aussehen können:

      <input type="text" name="datum[d][1]" value="">
      <input type="text" name="datum[d][19]" value="">
      <input type="text" name="datum[d][3]" value="">
      <input type="text" name="datum[d][66]" value="">

      wie komme ich mit einer schleife an diese werte ['+i+'] für
      PHP-Code:
      document.forms['update'].elements['datum[d]['+i+']'].value
      thx und grüße, crisdoe
      Zuletzt geändert von crisdoe; 22.04.2004, 21:47.

      Kommentar


      • #4
        gegenfrage: wie kommen denn die werte da rein? ... wenn du es per php generierst, mach dir parallel ein js-array, das du durchlaufen kannst ... werte auslesen und zuweisen sollte doch kein thema sein.
        Kissolino.com

        Kommentar


        • #5
          ... bin eben wieder auf mein "verschollenes" problem gestossen

          ich habe das ganze jetzt ein wenig modifiziert, aber erhalte
          seltsamerweise nicht den gewünschten effekt.
          das erste datum wird korrekt validiert, die anderen bleiben
          unbeachtet. entferne ich im onClick den ersten aufruf, so wird das
          zweite datum validiert der rest wieder nicht usw...

          bin etwas ratlos
          wie gebe ich dem onClick die verschiedenen werte für das javascript mit?
          momentan wird immer nur der erste ausgeführt...

          PHP-Code:
          <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
          <
          html>
          <
          head>
          <
          title>test</title>
          <
          meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
          <
          script language="JavaScript" type="text/JavaScript">
          <!--
          function 
          validate_datum(i) {
            if(
          document.forms['update'].elements['datum[d]['+i+']'].value!="" 
            
          || document.forms['update'].elements['datum[m]['+i+']'].value!="" 
            
          || document.forms['update'].elements['datum[Y]['+i+']'].value!=""
            {
            var 
          TAG parseInt(document.forms['update'].elements['datum[d]['+i+']'].value);
            var 
          MONAT parseInt(document.forms['update'].elements['datum[m]['+i+']'].value);
            var 
          JAHR parseInt(document.forms['update'].elements['datum[Y]['+i+']'].value);
            if (
          TAG >= && TAG 32 && MONAT >= && MONAT 13 && JAHR >= 1900 && JAHR <= 2100) {
            return 
          true;
            } else if (
          TAG == 00 && MONAT == 00 && JAHR == 0000) {
            return 
          true;  
            } else {
            
          alert("Bitte eine korrekte Datumsangabe!");
            return 
          false;
            }
            }    
          // end of function
          </script>
          </
          head>
          <
          body>
          <
          form action="#" method="post" name="update">
            <
          input name="datum[d][1]" type="text" value="44" size="2">
            <
          input name="datum[m][1]" type="text" value="12" size="2">
            <
          input name="datum[Y][1]" type="text" value="2002" size="4">
            <
          br>
            <
          br>
            <
          input name="datum[d][2]" type="text" value="55" size="2">
            <
          input name="datum[m][2]" type="text" value="11" size="2">
            <
          input name="datum[Y][2]" type="text" value="2000" size="4">
            <
          br>
            <
          br>
            <
          input name="datum[d][5]" type="text" value="63" size="2">
            <
          input name="datum[m][5]" type="text" value="03" size="2">
            <
          input name="datum[Y][5]" type="text" value="1999" size="4">
            <
          br>
            <
          br>
            <
          input name="datum[d][7]" type="text" value="12" size="2">
            <
          input name="datum[m][7]" type="text" value="12" size="2">
            <
          input name="datum[Y][7]" type="text" value="2004" size="4">
            <
          br>
            <
          br>
            <
          input type="submit" value="Senden" 
                   
          onClick="return validate_datum(1); 
                            return validate_datum(2); 
                            return validate_datum(5); 
                            return validate_datum(7);
                            "
          >
          </
          form>
          </
          body>
          </
          html

          Kommentar

          Lädt...
          X