funktioniert teilweise nicht im Firefox

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

  • funktioniert teilweise nicht im Firefox

    Hallo

    Ich hab folgende 2 Javascript Funktionen, die im Firefox nicht 100% so laufen, wie geplant bzw. wie sie es im IE tun.

    Die erste Funktion soll prüfen ob eine Postleitzahl eingegeben wurde. Falls die Zahl zu kurz ist oder unzulässige Zeichen enthält soll das angezeigt werden und der Cursor soll wieder in das Feld springen. Anzeige funktioniert, aber der Cursor springt nicht zurück ins Feld.

    Die zweite Funktion soll Pflichtfelder in einem Formular überprüfen. Wenn nichts eingegeben wurde soll das Feld eine neue Hintergrundfarbe bekommen. Das Formular wird nicht submittet, aber eine Farbe bekommt es auch nicht.

    Code:
    function check_postcode(field){
    	var zugelassene_zeichen = "0123456789";
    	var Fehlermeldung = "";
    	
    	//prüfen ob Plz zu kurz
    	if(field.value.length < 5)
    		Fehlermeldung = "Ihre Postleitzahl ist zu kurz.";
    	
    	
    	for (var Pos = 0; Pos < field.value.length; Pos++){
    		
    		
    		if(zugelassene_zeichen.indexOf(field.value.charAt(Pos)) == -1){
    		
    			if(Fehlermeldung == ""){
    				Fehlermeldung = "Ihre Postleitzahl enthält folgende 
    unzulässige Zeichen:\n";
    			}
    			
    			Fehlermeldung += "'"
    			Fehlermeldung += field.value.charAt(Pos)
    			Fehlermeldung += "'\n"
    		}
    	}
    	if(Fehlermeldung != ""){ 
    		alert(Fehlermeldung);
    		field.focus();
    		return;
    	}
    }
    
    function check_compulsory_fields(number){
    	var ok = true;
    	
    	for(i=1;i<=number;i++){
    		if(document.getElementById('p_'+i).value == ""){
    			document.getElementById('p_'+i).style.backgroundColor = "FF00FF";
    			ok = false;
    		}
    		else
    			document.getElementById('p_'+i).style.backgroundColor = "";
    	}
    	if(!ok)
    		alert("Sie haben nicht alle Pflichtfelder ausgefüllt. 
    Bitte überprüfen Sie Ihre Eingabe in den farblich markierten Bereichen.");
    	return ok;
    }
    Woran liegt das?

    thx
    Boneman

  • #2
    ... und was hast du der Funktion übergeben? Ohne diese Info kann man schlecht was sagen.

    Kommentar


    • #3
      ah ok. Sorry.

      Aufruf der ersten Funktion:
      Code:
      <input type="text" id="p_3" name="poa_postcode" size="4" maxlength="5" 
      value="'.$poa_postcode.'" onblur="check_postcode(poa_postcode)">
      Aufruf der zweiten Funktion:
      Code:
      <form enctype="multipart/form-data" method="post" action="action_move.php" 
      onSubmit="return check_compulsory_fields(7)"
      Die 7 ist hier einfach eine Zahl (werd ich eventuell noch ändern, daß ich mir mittels getElementByTagName die Anzahl aller Inputfelder ausgeben lasse und damit rechne. Also würde an die Funktion dann nichts mehr übergeben werden.

      Boneman

      Kommentar


      • #4
        Original geschrieben von Boneman
        Aufruf der ersten Funktion:
        Code:
        <input type="text" id="p_3" name="poa_postcode" size="4" maxlength="5" 
        value="'.$poa_postcode.'" onblur="check_postcode([b]poa_postcode[/b])">
        und die/das javascript-variable/-objekt poa_postcode, welches du da als parameter übergibst, hast du wo definiert?
        I don't believe in rebirth. Actually, I never did in my whole lives.

        Kommentar


        • #5
          Original geschrieben von wahsaga
          und die/das javascript-variable/-objekt poa_postcode, welches du da als parameter übergibst, hast du wo definiert?
          das ist der Name des Input Feldes => name="poa_postcode"

          Kommentar


          • #6
            und DAS soll im IE funz? glaube ich dir nicht!

            übergebe stattdessen einfach this, also check_postcode(this);

            Kommentar


            • #7
              Original geschrieben von Boneman
              das ist der Name des Input Feldes => name="poa_postcode"
              quark, so wie du das notiert hast, ist das eine javascript-variable. eine verbidung zu irgendwelchen feldnamen besteht nicht im geringsten.

              vermutlich wolltest du an der stelle den feldnamen als string übergeben, und dann so darauf zugreifen, wie es hier beschrieben steht: http://de.selfhtml.org/javascript/ob...tm#allgemeines
              I don't believe in rebirth. Actually, I never did in my whole lives.

              Kommentar


              • #8
                Original geschrieben von asp2php
                und DAS soll im IE funz? glaube ich dir nicht!
                hmm, also ich hab das File mal auf das wesentlichste gekürzt. Also mein IE zeigt die Fehlermeldung an und springt automatisch wieder in das Plz-Feld zurück.

                Code:
                <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
                <html>
                <head>
                	<title>Titel</title>
                	<link rel="stylesheet" type="text/css" href="css/style.css"/>	
                	
                	
                	<SCRIPT LANGUAGE="JavaScript">
                		<!--
                		
                			
                		function check_postcode(field){
                			var zugelassene_zeichen = "0123456789";
                			var Fehlermeldung = "";
                			
                			//prüfen ob Plz zu kurz
                			if(field.value.length < 5)
                				Fehlermeldung = "Ihre Postleitzahl ist zu kurz.";
                			
                			for (var Pos = 0; Pos < field.value.length; Pos++){
                				
                				
                				if(zugelassene_zeichen.indexOf(field.value.charAt(Pos)) == -1){
                				
                					if(Fehlermeldung == ""){
                						Fehlermeldung = "Ihre Postleitzahl enthält folgende 
                						unzulässige Zeichen:\n";
                					}
                					
                					Fehlermeldung += "'"
                					Fehlermeldung += field.value.charAt(Pos)
                					Fehlermeldung += "'\n"
                				}
                			}
                			if(Fehlermeldung != ""){ 
                				alert(Fehlermeldung);
                				field.focus();
                				return;
                			}
                		}
                		
                		function check_compulsory_fields(number){
                			var ok = true;
                			
                			for(i=1;i<=number;i++){
                				if(document.getElementById('p_'+i).value == ""){
                					document.getElementById('p_'+i).style.backgroundColor = "FF00FF";
                					ok = false;
                				}
                				else
                					document.getElementById('p_'+i).style.backgroundColor = "";
                			}
                			if(!ok)
                				alert("Sie haben nicht alle Pflichtfelder ausgefüllt. Bitte überprüfen 
                				Sie Ihre Eingabe in den farblich markierten Bereichen.");
                			return ok;
                		}
                		
                		
                		
                		//-->
                	</SCRIPT> 
                </head>
                
                
                <body>
                
                <form enctype="multipart/form-data" method="post" action="action_move.php" 
                		onSubmit="return check_compulsory_fields(7)">
                		
                		<div id="form_right">
                			<input type="text" id="p_1" name="poa_name" size="45" value=""/><br />
                			<input type="text" name="poa_room" size="45" value=""/><br />
                			<input type="text" id="p_2" name="poa_address" size="45" value=""/><br />
                			<input type="text" id="p_3" name="poa_postcode" size="4" maxlength="5" value="" 
                			onblur="check_postcode(poa_postcode)">
                			<strong>Ort</strong>: <input type="text" id="p_4" name="poa_city" size="32" value="">
                			<br /><br />
                			<input type="text" id="p_5" name="poa_contact_name" size="36" value=""/><br />
                			<input type="text" id="p_6" name="poa_contact_mail" size="36" value=""/><br />
                			<input type="text" id="p_7" name="poa_contact_phone1" size="36" value=""/><br />
                			<input type="text" name="poa_contact_phone2" size="36" value="">
                			
                			<input type="submit">
                		</form>
                		</body>
                </html>
                wenn ich das schreibe
                Code:
                <input type="text" id="p_3" name="poa_postcode" size="4" maxlength="5" value="" 
                			onblur="check_postcode(this)">
                kommt folgende Fehlermeldung im IE:
                Fehler: Objekt erwartet

                vermutlich wolltest du an der stelle den feldnamen als string übergeben, und dann so darauf zugreifen, wie es hier beschrieben steht: http://de.selfhtml.org/javascript/o...htm#allgemeines
                Ich wollte das genauso machen wie im Beispiel 2 bei dem Link. Wie hätte ich es also anders schreiben müssen?


                Habt ihr auch eine Idee, wieso das mit den Farben nicht funktioniert, was übrigens im IE auch geht.

                thx
                Boneman
                Zuletzt geändert von Boneman; 29.08.2005, 16:18.

                Kommentar


                • #9
                  Original geschrieben von Boneman
                  Ich wollte das genauso machen wie im Beispiel 2 bei dem Link. Wie hätte ich es also anders schreiben müssen?
                  schau in selfhtml nach, wie man formularelemente über ihren namen anspricht. (den du im übrigen immer noch nicht an die funktion übergibst!)

                  Habt ihr auch eine Idee, wieso das mit den Farben nicht funktioniert, was übrigens im IE auch geht.
                  weil du keine gültigen farbwerte übergibst.
                  I don't believe in rebirth. Actually, I never did in my whole lives.

                  Kommentar


                  • #10
                    Hallo

                    Sorry, daß ich erst jetzt antworte, aber ich hatte vorher keine Zeit mich weiter damit zu beschäftigen.

                    Die vergessene Raute vor dem Farbwert war nen blöder Fehler, der beim ändern des selbigen passiert sein muß und wenn der IE mir wenigstens auch nichts angezeigt hätte, dann hätte ich es wohl auch gleich gesehen :/.


                    Das mit dem Focus auf mein Input will aber immer noch nicht so recht klappen.

                    Code:
                    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
                    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
                    <html>
                    <head>
                    <title>Titel</title>
                    <link rel="stylesheet" type="text/css" href="css/style.css"/>	
                    
                    
                    <SCRIPT LANGUAGE="JavaScript">
                    	<!--
                    	
                    		
                    function check_postcode(field){
                    	var zugelassene_zeichen = "0123456789";
                    	var Fehlermeldung = "";
                    	
                    	for (var Pos = 0; Pos < field.value.length; Pos++){				
                    		if(zugelassene_zeichen.indexOf(field.value.charAt(Pos)) == -1){
                    		
                    			if(Fehlermeldung == ""){
                    				Fehlermeldung = "Ihre Postleitzahl enthält folgende unzulässige Zeichen:\n";
                    			}
                    			
                    			Fehlermeldung += "'"
                    			Fehlermeldung += field.value.charAt(Pos)
                    			Fehlermeldung += "'\n"
                    		}
                    	}
                    	
                    	//prüfen ob Plz zu kurz
                    	if(field.value.length < 5)
                    		Fehlermeldung += "Ihre Postleitzahl ist zu kurz.";
                    		
                    	if(Fehlermeldung != ""){ 
                    		alert(Fehlermeldung);
                    		field.focus();
                    		return;
                    	}
                    }
                    
                    	
                    	//-->
                    </SCRIPT> 
                    </head>
                    
                    
                    <body>
                    
                    <form name="test_form" method="post" action="" >
                    
                    	<input type="text" id="p_1" name="poa_name" size="45" value=""/><br />
                    	<input type="text" name="poa_room" size="45" value=""/><br />
                    	<input type="text" id="p_2" name="poa_address" size="45" value=""/><br />
                    	<input type="text" id="p_3" name="poa_postcode" size="4" maxlength="5" value="" 
                    	onblur="check_postcode(document.test_form.elements['poa_postcode'])">
                    	<strong>Ort</strong>: <input type="text" id="p_4" name="poa_city" size="32" value="">
                    	<br /><br />
                    		
                    	<input type="submit">
                    </form>
                    </body>
                    </html>
                    Ich bekomme weder im IE noch im Firefox (Javascriptkonsole) eine Fehlermeldung angezeigt. Die Alerts funktionieren auch so, wie sie sollen nur der Focus wird eben nur im IE korrekt gesetzt.

                    Ich hab alles mögliche für den Funktionsaufruf ausprobiert:
                    check_postcode(document.test_form.elements['poa_postcode'])
                    check_postcode(document.test_form.poa_postcode)
                    check_postcode(this.form.elements['poa_postcode'])
                    check_postcode(this.form.elements[3])

                    Woran liegt das denn jetzt noch?

                    thx
                    Boneman

                    Kommentar


                    • #11
                      Original geschrieben von Boneman
                      Ich hab alles mögliche für den Funktionsaufruf ausprobiert:
                      this zu übergeben, sollte in diesem falle eigentlich schon ausreichen.

                      und, debugging ...? beispielsweise mal feldinhalt mit alert anzeigen lassen, etc.?
                      I don't believe in rebirth. Actually, I never did in my whole lives.

                      Kommentar


                      • #12
                        Original geschrieben von wahsaga
                        this zu übergeben, sollte in diesem falle eigentlich schon ausreichen.
                        hmm ok, aber hab mich zumindest damit beschäftigt und weiß jetzt, wie ich Felder übergeben kann

                        und, debugging ...? beispielsweise mal feldinhalt mit alert anzeigen lassen, etc.?
                        Der Fehler muß jetzt irgendwo hier liegen
                        Code:
                        if(Fehlermeldung != ""){ 
                        	alert(Fehlermeldung);
                        	field.focus();
                        	return;
                        }
                        Wenn ich die Zeile

                        alert(field.value);

                        einfüge und z.B. eine 12 eingebe, dann wird mir korrekt die Fehlermeldung
                        "Ihre Postleitzahl ist zu kurz."
                        angezeigt und das nächste alert spuckt mir eine "12" aus

                        Hat der Firefox irgendetwas gegen den Focus() Befehl?

                        btw
                        Wenn ich field.focus(); vor alert(Fehlermeldung); schreibe, dann stürzt mein Firefox ab. Den IE läßt das kalt...

                        Kommentar

                        Lädt...
                        X