Zwiedel: Wertebereich von Textfeld einschränken durch anderes Textfeld

Hi Leute

Ist das ein langer Titel oder nicht ^^?

Aaaaalso ich mach das ganze per javascript und hab es auch schon so weit dass ich eine funktion habe, die heißt CheckInput(input, lowLim, upLim),
und bekommt je nachdem von welchem feld was eingegeben wurde das was eingegeben wurde (input), ein lowerLimit und ein upperLimit übergeben.
außerdem noch die id (damit ich unterscheiden kann von welchem feld) und das jeweilige formular (wenn das so heißt)

function CheckInput(formular, input, id, lowLim, upLim)
{
if(id == 1)
{
if(input == 6 || input == 12 || input == 18 || input == 24)
{
formular.submit();
}
else
{
alert('soooo nich');
}
}

if(id == 2)
{
if(input >= lowLim && input <= upLim)
{
formular.submit();
}
else
{
alert('soooo nich');
}
}
}

ich hab also mehrere(hier mal 2) eingabe felder:
<input type="text" name="sollspgEin" maxlength="5">
<input type="submit" value="Save" onClick="CheckInput(this.form, this.form.zellzahl.value,1,6,24); return false;">

<input type="text" name="sollspgAus" maxlength="5">
<input type="submit" value="Save" onClick="CheckInput(this.form, this.form.sollspgEin.value,2,0,30); return false;" >

wenn bei dem feld mit der id = 1 jetzt zB eine 6 eingebe,
soll der zugelassene Wertebereich von feld 2 (id = 2)
nur noch 0 bis 16 sein (und nicht wie jetzt von 0 bis 30)

wenn eine 12 eingegeben wird
wie bereits vorhanden 0 bis 30

bei 18 soll er noch größer werden.

ich weiß aber nicht wie ich diese werte mitverändern kann,
kann mir hier jemand helfen?

Gruß Zwiedel

  1. Hi

    wenn bei dem feld mit der id = 1 jetzt zB eine 6 eingebe,
    soll der zugelassene Wertebereich von feld 2 (id = 2)
    nur noch 0 bis 16 sein (und nicht wie jetzt von 0 bis 30)

    Dann kannst Du Deine Grenzwerte nicht statisch übergeben, sondern musst in der auswertenden Funktion zunächst den wert von id 1 auslesen und davon abhängig Deine Grenzwerte festlegen. Die kannst Du z.B in einem Array hinterlegen:
    var grenzwerte =  {
        1:[0,3],
        2:[0,10],
        6:[0,16]
    }

    Gruesse, Joachim

    --
    Am Ende wird alles gut.
    1. Dann kannst Du Deine Grenzwerte nicht statisch übergeben, sondern musst in der auswertenden Funktion zunächst den wert von id 1 auslesen und davon abhängig Deine Grenzwerte festlegen. Die kannst Du z.B in einem Array hinterlegen:

      var grenzwerte =  {
          1:[0,3],
          2:[0,10],
          6:[0,16]
      }

      Ja genau das will ich machen.
      Aber wie mache ich diese statischen Werte variabel?
      In Html kann ich doch keine Variablen anlegen. Nur in Javascript oder?

      1. Hi,

        Aber wie mache ich diese statischen Werte variabel?
        In Html kann ich doch keine Variablen anlegen. Nur in Javascript oder?

        Genau. Du schreibst eine Function, liest dort mit document.formname.elementname.value den gegebenen Wert aus und holst aus dem hinterlegten Array die Grenzwerte

        function machwas () {

        var min, max;
            var grenzwerte =  {
                1:[0,3],
                2:[0,10],
                /*
                    und so fort
                */
                6:[0,16] // letzter ohne Komma
            }
            var wert1 = document.formname.name_erstes_element.value;

        //test
            alert(wert1);

        // ist er überhaupt vorhanden?
            if (isset(grenzwerte[wert1])) {
                min =  grenzwerte[wert1][0];
                max =  grenzwerte[wert1][1];
            } else {
                alert("jibbet nich!");
                return; // gibts nicht, mach nix
            }

        // test
            alert(min + ", " + max);
        }

        Doch mal Doku lesen?

        Gruesse, Joachim

        --
        Am Ende wird alles gut.
        1. function machwas () {

          var min, max;
              var grenzwerte =  {
                  1:[0,3],
                  2:[0,10],
                  /*
                      und so fort
                  */
                  6:[0,16] // letzter ohne Komma
              }
              var wert1 = document.formname.name_erstes_element.value;

          //test
              alert(wert1);

          // ist er überhaupt vorhanden?
              if (isset(grenzwerte[wert1])) {
                  min =  grenzwerte[wert1][0];
                  max =  grenzwerte[wert1][1];
              } else {
                  alert("jibbet nich!");
                  return; // gibts nicht, mach nix
              }

          // test
              alert(min + ", " + max);
          }

          Ok danke.
          Aber was kommt im html code hin???
          onClick="CheckInput(this.form, this.form.zellzahl.value,1,6,36); return false;"
          das soll ja jedes mal an die stelle wo hier jetzt grad 6 und 36 stehn gesetzt werden.

          1. Hi,

            Ok danke.

            bitte. Aber gewöhn Dir bitte mal an, vernünftig zu zitieren.

            Aber was kommt im html code hin???

            da ich nicht weiss, was genau Du vorhast, kann ich Dir das nicht sagen, aber...

            onClick="CheckInput(this.form, this.form.zellzahl.value,1,6,36); return false;"

            onclick ist hier vermutlich falsch, denn Du willst ja sicher Dein Formular vor dem Versenden prüfen. Da bietet sich dann der eventhandler onsubmit an, der im Formtag notiert wird. In der Funktion liest Du jetzt auch noch den Wert aus, der im zweiten Feld eingegeben wurde, und vergleichst ihn mit min/max, die wie im Beispiel ermittelt werden könnten.

            <form onsubmit="return machwas ()" ...

            Wenn Du am Ende Deiner Prüfung in machwas true zurückgibst, wird die Form versendet, andernfalls nicht.

            Gruesse, Joachim

            --
            Am Ende wird alles gut.
            1. onclick ist hier vermutlich falsch,

              Per onclick wird die Checkinput funktion aufgerufen die dann das was eingegeben wurde auf den entsprechenden Wertebereich, der auch gleich mit übergeben wird, überprüft.

              Je nachdem welcher submit button gedrück wird, bekommt die CheckInput funktion einen anderen Wertebereich zugeordnet.

              Also schreib ich doch in meinen submit button
              onClick="CheckInput(this.form, this.form.zellzahl.value,1,6,36); return false;"
              --> Wertebereich 6 bis 36 zugelassen

              das wäre jetzt zB von bei button 1

              bei button 2 wäre das ganze,
              onClick="CheckInput(this.form, this.form.zellzahl.value,1,0,16); return false;"

              --> Wertebereich 0 bis 16 zugelassen.

              jetzt soll aber der Wertebereich geändert werden, je nachdem was bei dem Text-Feld, zu dem button 1 gehört, eingegeben wurde und ab dann soll das Text-Feld2, das zu button 2 gehört, nur noch den neuen Wertebereich übergeben.

              Ich weiß nicht ob du mir das vllt schon beantwortet hast, ich glaub ich häng noch irgendwo, komm aber grad echt nicht drauf.

              Trotzdem danke für die Hilfe,

              Gruß Zwiedel

              1. Yerf!

                ich glaub ich häng noch irgendwo, komm aber grad echt nicht drauf.

                Kleiner Denkanstoß:

                • Den Wertebereich nicht beim Aufruf der Funktion CheckInput übergeben (die Parameter entfallen ersatzlos)

                • Am Anfang der Funktion CheckInput den Inhalt des anderen Eingabefeldes ermitteln und daraus den Wertebereich ableiten (z.B. wie schon vorgeschlagen per Array)

                Gruß,

                Harlequin

                --
                <!--[if IE]>This page is best viewed with a webbrowser. Get one today!<![endif]-->
  2. Mahlzeit Zwiedel,

    wenn bei dem feld mit der id = 1 jetzt zB eine 6 eingebe,

    ... ist das trotzdem falsch, <http://de.selfhtml.org/html/referenz/attribute.htm#id_idref_name@title=da eine ID nicht nur numerisch sein darf und mit einem Buchstaben beginnen muss>.

    Ich weiß nicht, ob es was mit Deinem eigentlich Problem zu tun hat, aber die Basis für funktionierendes Javascript ist AFAIK immer valides HTML.

    MfG,
    EKKi

    --
    sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
    1. Hallo EKKi,

      wenn bei dem feld mit der id = 1 jetzt zB eine 6 eingebe,

      ... ist das trotzdem falsch, ...

      echt? Und ich dachte, ich dürfte JS-Variablen beliebige Werte geben.

      Gruß, Jürgen

      1. Mahlzeit JürgenB,

        echt? Und ich dachte, ich dürfte JS-Variablen beliebige Werte geben.

        Sicher. Ich habe auch nie etwas anders behauptet. Es ist aber trotzdem falsch, wenn ein Feld (denn darum ging es) eine rein numerische ID besitzt.

        MfG,
        EKKi

        --
        sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
        1. Hallo EKKi,

          .... Es ist aber trotzdem falsch, wenn ein Feld (denn darum ging es) eine rein numerische ID besitzt.

          und wo haben Zwiedels Felder außer als JS-Parameter eine ID?

          Gruß, Jürgen

        2. Hallo,

          Es ist aber trotzdem falsch, wenn ein Feld (denn darum ging es) eine rein numerische ID besitzt.

          ja, ist es. In HTML & Co. Das hat aber nichts mit dem vorliegenden Fall zu tun, in dem du so entschlossen behauptet hast, der OP hätte etwas falsch gemacht. Er hat lediglich eine Variable (genaugenommen ein Argument einer Funktion) mit 'id' bezeichnet. Und das darf er gern tun.

          So long,
           Martin

          --
          Ich bin 30. Ich demensiere apokalyptisch.
            (Orlando)
          1. Mahlzeit Der Martin,

            Er hat lediglich eine Variable (genaugenommen ein Argument einer Funktion) mit 'id' bezeichnet. Und das darf er gern tun.

            Das stimmt natürlich. Jetzt sehe ich es auch. Natürlich habt Ihr beiden (JürgenB und Du) Recht ... ich habe mich durch die Formulierung "feld mit der id = 1" verwirren lassen.

            Mea culpa && Asche auf mein Haupt.

            MfG,
            EKKi

            --
            sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
  3. Ich weiß nicht warum ich jetzt solche komische antworten erhalte,
    vielleicht hab ich s ja auch komisch erklärt ^^

    ich will letztendlich einfach nur wissen wie ich diese statischen Werte

    onClick="CheckInput(this.form, this.form.zellzahl.value,1,6,24); return false;"

    die mit übergeben (hier die 6 und die 24)

    variabel machen kann.

    so was wie

    onClick="CheckInput(this.form, this.form.zellzahl.value,1,x,y); return false;"

    und ich kann dann bestimmen was in x , y reingeschrieben werden soll.

    Ich weiß nicht ob das geht, ich weiß auch nicht ob das eine total triviale Frage ist. Ich bin ziemlicher anfänger in html.

    Danke

    Gruß Zwiedel