mario: Formularvalidierung nur beim ersten mal?

Hallo miteinander,

ich weiss das ich bestimmt nicht der erste mit diesem Problem bin, allerdings habe ich bisher keine Lösung zu meinem Problem gefunden und deshalb versuche ich nun hier mein Glück.

Folgende Probleme:

Die folgende Buttons sollen, falls keine Auswahl getroffen wurde, die Javascript Funktion "eingabePruefen" aufrufen. Das funktioniert soweit auch ganz gut. Wenn man allerdings im nachhinein einen der Buttons aktiviert verändert sich die leider garnichts, obwohl die "else if" Anweisung ja genau das bewirken soll.

  
      <div class="leftFormContainer">  
        <span id="jserror1">  
         <label>Bei diesem Antrag handelt es sich um eine...</label>  
        </span>  
      </div>  
      <div class="rightFormContainer">  
        <input onchange="eingabePruefen;" type="radio" name="antragsArt" value="Neuanmeldung">Neuanmeldung&nbsp;  
        <input onchange="eingabePruefen;" type="radio" name="antragsArt" value="Aenderung">&Auml;nderung  
      </div>  

  
  
function eingabePruefen () {  
  
if (f.antragsArt[0].checked == false || f.antragsArt[1].checked == false)  
        {  
          document.getElementById('jserror1').style.backgroundColor = "#ff0000"  
          //document.getElementById('jserror1').style.color = "#000000"  
        }  
         else if (f.antragsArt[0].checked == true || f.antragsArt[1].checked == true)  
        {  
          document.getElementById('jserror1').style.color = "#000000"  
          //document.getElementById('jserror1').style.backgroundColor = "#0000ff"  
        }  
return false  
}  

Und noch etwas:

Wenn ich mehrere style Änderungen in einen Abwasch vollziehen will wird nur die erste angewendet und die restlichen ignoriert! Woran liegt das denn und wie kann man es umgehen?

MfG

Mario

  1. Hi,

    Die folgende Buttons sollen, falls keine Auswahl getroffen wurde, die Javascript Funktion "eingabePruefen" aufrufen.

    statt dessen prüfst Du, ob mindestens einer der beiden Radio-Buttons inaktiv ist. Zufällig ist dies auch der Fall, wenn keiner ausgewählt wurde.

      
    
    >       <div class="leftFormContainer">  
    
    [...]  
    
    >       <div class="rightFormContainer">  
    
    

    Warum hast Du übriggelassene und korrekte Formular-Container? Für "links" und "rechts" kann das ja nicht stehen, da dies auf die gwünschte Darstellung schließen ließe, was in HTML nichts verloren hat.

      
    
    >           document.getElementById('jserror1').style.backgroundColor = "#ff0000"  
    
    

    Explizite Styles gehören, soweit möglich, in den CSS-Code. Und hier ist das definitiv möglich.

    Wenn ich mehrere style Änderungen in einen Abwasch vollziehen will wird nur die erste angewendet und die restlichen ignoriert! Woran liegt das denn und wie kann man es umgehen?

    Es liegt daran, dass Du etwas falsch machst. Umgehen kannst Du dies, indem Du es richtig machst. Wo der Fehler liegt, kann Dir natürlich keiner sagen, da Du den entsprechenden Code nicht genannt hast.

    Cheatah

    --
    X-Self-Code: sh:( fo:} ch:~ rl:| br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
    X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
    X-Will-Answer-Email: No
    X-Please-Search-Archive-First: Absolutely Yes
  2. <div class="leftFormContainer">
            <span id="jserror1">
             <label>Bei diesem Antrag handelt es sich um eine...</label>

    Welche Funktion hat das Label Element hier?

    </span>
          </div>
          <div class="rightFormContainer">
            <input onchange="eingabePruefen;" type="radio" name="antragsArt" value="Neuanmeldung">Neuanmeldung&nbsp;

    Warum kein <label> hier?

    <input onchange="eingabePruefen;" type="radio" name="antragsArt" value="Aenderung">&Auml;nderung

    Warum kein <label> hier?

    </div>

      
    Das ist schlechtes HTML.  
    Jede Radiobox braucht ein mit <label for="..."> bezeichnetes Label  
      
    
    > ~~~javascript
      
    
    >   
    > function eingabePruefen () {  
    >   
    > if (f.antragsArt[0].checked == false || f.antragsArt[1].checked == false)  
      
    Welche Priorität hat || ?  
      
    
    >         {  
    >           document.getElementById('jserror1').style.backgroundColor = "#ff0000"  
      
    warum setzt du nicht eine Klasse?  
      
    
    >           //document.getElementById('jserror1').style.color = "#000000"  
    >         }  
    >          else if (f.antragsArt[0].checked == true || f.antragsArt[1].checked == true)  
      
    Welche Priorität hat || ?  
      
    
    >         {  
    >           document.getElementById('jserror1').style.color = "#000000"  
    >           //document.getElementById('jserror1').style.backgroundColor = "#0000ff"  
    >         }  
    > return false  
    > }  
    > 
    
    

    Und noch etwas:

    Wenn ich mehrere style Änderungen in einen Abwasch vollziehen will wird nur die erste angewendet und die restlichen ignoriert! Woran liegt das denn und wie kann man es umgehen?

    Wie hast du es versucht?
    Warum setzt du nicht eine Klasse?

    Ich würde sagen, du kannst dir die JS Prüfung sparen, indem du "Neuanmeldung" per Default im HTML als checked schreibst.

    mfg Beat

    --
    Woran ich arbeite:
    X-Torah
    ><o(((°>           ><o(((°>
       <°)))o><                     ><o(((°>o
    1. else if (f.antragsArt[0].checked == true || f.antragsArt[1].checked == true)

      Welche Priorität hat || ?

      Logischerweise (haha, Wortwitz) eine höhere als die Vergleichsoperatoren, damit man das problemlos schreiben kann.

      http://de.selfhtml.org/javascript/sprache/operatoren.htm#rangfolge (Ist etwas verwirrend, eigentlich muss die Liste anders herum geordnet sein. Klammern werden zuerst, das Komma zuletzt aufgelöst.)

      Mathias

      1. Welche Priorität hat || ?

        Logischerweise (haha, Wortwitz) eine höhere als die Vergleichsoperatoren, damit man das problemlos schreiben kann.

        http://de.selfhtml.org/javascript/sprache/operatoren.htm#rangfolge (Ist etwas verwirrend, eigentlich muss die Liste anders herum geordnet sein. Klammern werden zuerst, das Komma zuletzt aufgelöst.)

        Ich schreibe definitiv zu viel Perl und zu wenig Javascript

        mfg Beat

        --
        Woran ich arbeite:
        X-Torah
        ><o(((°>           ><o(((°>
           <°)))o><                     ><o(((°>o
        1. Ich schreibe definitiv zu viel Perl und zu wenig Javascript

          Wieso? In Perl ist es doch genauso.

          Struppi.

          1. Hi,

            Ich schreibe definitiv zu viel Perl und zu wenig Javascript

            Wieso? In Perl ist es doch genauso.

            Vielleicht wollte er damit sagen, wenn er mehr JavaScript schreiben wuerde, wuesste er dann auch in Perl, was er eigentlich tut :-)

            SCNR ChrisB

            --
            „This is the author's opinion, not necessarily that of Starbucks.“