Anzeige:
Ergebnis 1 bis 5 von 5

Thema: Eckige Klammer in Variablenname bei JS machbar ?

  1. #1
    Registrierter Benutzer
    Registriert seit
    24.09.2005
    Beiträge
    48

    Eckige Klammer in Variablenname bei JS machbar ?

    Hallo zusammen,

    hab folgendes Problem:
    Ich habe mehrere Eingabefelder auf einer PHP-Webseite, in denen ich jeweils die Zeichen zählen möchte.
    Die Felder haben die Bezeichnung "beschreibung[1]", "beschreibung[2]" etc..

    Die Zeichen-zähl-Funktion hab ich hier gefunden.

    Mein Problem sind aber die Feldbezeichnungen mit der eckigen Klammer.
    Damit kommt die JS-Funktion nicht klar.
    Beispiel-Zeile vom (nicht-funktionierenden) Code:
    Code:
    if (window.document.zeige.beschreibung[1].value.length>10)
    Ich hab die Funktion getestet. Sie funktioniert, wenn ich die eckigen Klammern aus dem Namen durch Unterstriche ersetze.
    Dann aber hab ich das Problem, dass die Webseite die eingegebenen Daten nicht mehr in die Datenbank speichern kann, weil alle weiteren Funktionen der Webseite auf der Feldbezeichnung (mit eckigen Klammern) beruhen.

    Ich hoffe, ich konnte mein Problem einigermaßen rüberbringen.

    Gibt es eine Möglichkeit, wie ich das lösen kann, ohne auf die eckigen Klammern verzichten zu müssen ?

    Danke und Gruß
    Andreas
    Geändert von AndreasMeier (30-09-2010 um 09:04 Uhr)

  2. #2
    Registrierter Benutzer
    Registriert seit
    14.01.2002
    Beiträge
    657
    Zitat Zitat von AndreasMeier Beitrag anzeigen
    Hallo zusammen,

    hab folgendes Problem:
    Ich habe mehrere Eingabefelder auf einer PHP-Webseite, in denen ich jeweils die Zeichen zählen möchte.
    Die Felder haben die Bezeichnung "beschreibung[1]", "beschreibung[2]" etc..

    Die Zeichen-zähl-Funktion hab ich hier gefunden.

    Mein Problem sind aber die Feldbezeichnungen mit der eckigen Klammer.
    Damit kommt die JS-Funktion nicht klar.
    Beispiel-Zeile vom (nicht-funktionierenden) Code:
    Code:
    if (window.document.zeige.beschreibung[1].value.length>10)
    Ich hab die Funktion getestet. Sie funktioniert, wenn ich die eckigen Klammern aus dem Namen durch Unterstriche ersetze.
    Dann aber hab ich das Problem, dass die Webseite die eingegebenen Daten nicht mehr in die Datenbank speichern kann, weil alle weiteren Funktionen der Webseite auf der Feldbezeichnung (mit eckigen Klammern) beruhen.

    Ich hoffe, ich konnte mein Problem einigermaßen rüberbringen.

    Gibt es eine Möglichkeit, wie ich das lösen kann, ohne auf die eckigen Klammern verzichten zu müssen ?

    Danke und Gruß
    Andreas

    konter den javascript interpreter doch einfach ebenfalls mit eckigen klammern
    Code:
    if (window.document.zeige["beschreibung[1]"].value.length>10)

  3. #3
    Registrierter Benutzer Avatar von undefined
    Registriert seit
    01.03.2004
    Beiträge
    1.255
    Mit einer Schleife auf die Elemente.
    Code:
    <?xml version="1.0" encoding="utf-8"?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
       <title>From Undefined</title>
       <meta name="GENERATOR" content="Quanta Plus" />
       <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
       <meta http-equiv="cache-control" content="no-cache" />
       <style type="text/css">
          /* <![CDATA[ */
            input { display: block; }
          /* ]]> */
       </style>
       <script type="text/javascript">
          /* <![CDATA[ */
             function checkInput()
             {
                var pattern = new RegExp(/\bbeschreibung\[\d\]/);
                var nodes = document.getElementsByTagName('input');
                for( var i in nodes )
                {
                  if ( ! pattern.test( nodes[i].name ) )
                    continue;
    
                  if ( nodes[i].value.length < 10 )
                  {
                    nodes[i].style.background='red';
                    return false;
                  }
                }
                return true;
             }
          /* ]]> */
       </script>
    </head>
    <body>
    <div class="main">
      <form action="#" method="post" onSubmit="return checkInput();">
        <input type="text" name="beschreibung[1]" value="a" />
        <input type="text" name="beschreibung[2]" value="b" />
        <input type="text" name="beschreibung[3]" value="b" />
        <input type="text" name="beschreibung[4]" value="c" />
        <input type="text" name="beschreibung[5]" value="d" />
        <input type="text" name="beschreibung[6]" value="e" />
        <input type="text" name="beschreibung[7]" value="f" />
        <input type="text" name="beschreibung[8]" value="g" />
        <input type="submit" />
      </form>
    </div>
    </body>
    </html>
    mfg undefined
    --
    Undefined Behavior (undefiniertes Verhalten) bedeutet meistens etwas ungültiges.
    xhtml Debugger

  4. #4
    Registrierter Benutzer
    Registriert seit
    24.09.2005
    Beiträge
    48
    Ich werd's zwar erst morgen ausprobieren können, aber eure Lösungen schaun auf den ersten Blick äußerst interessant aus, herzlichen Dank dafür !
    Ich werde berichten.

  5. #5
    Registrierter Benutzer Avatar von BlueJay
    Registriert seit
    27.08.2004
    Beiträge
    825
    Hallo Leute, nicht so umständlich!


    Wie wäre es hiermit?
    Code:
    <html>
    <head>
    <script type="text/javascript">
    
    function mach_hinne()
    { var i,krempel,t='';
      for (i=1; i<9; i++)
      { krempel='beschreibung['+i+']';
        with(document.form1.elements[krempel]) t=t+value.length+'\n'; 
      }
      alert(t);
      return false;
    }
    
    
    
    
    </script>
    </head>
    <body>
    <form name="form1" action="#" method="post" onSubmit="return mach_hinne();">
        <input type="text" name="beschreibung[1]" value="assssss">
        <input type="text" name="beschreibung[2]" value="bddddddd">
        <input type="text" name="beschreibung[3]" value="bvvvvvvvvvv">
        <input type="text" name="beschreibung[4]" value="cv">
        <input type="text" name="beschreibung[5]" value="drrr">
        <input type="text" name="beschreibung[6]" value="eaaaaa">
        <input type="text" name="beschreibung[7]" value="fxxxxxxxxxx">
        <input type="text" name="beschreibung[8]" value="gxxx">
        <input type="submit">
      </form>
    
    </body>
    </html>
    Gruß,
    Ulrike
    Geändert von BlueJay (14-10-2010 um 12:16 Uhr) Grund: Unterschrift vergessen!
    Eigentlich ganz einfach, wenn man's weiss!

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •