Pei: Event.observe() kann kein 'change'-event fassen

Schönen guten Abend,

Eine Neuling-Frage habe ich über Prototype.
und zwar wollte ich ein 'Change'-Observer an ein Form installieren. habe ich folgende Code geschrieben,

  
<script type="text/javascript" src="scripts/prototype.js"></script>  
<script type="text/javascript" src="scripts/scriptaculous.js"></script>  
...  
...  
<script language="javascript">  
function addObservers(){  
  
  
        // ich habe auch mit Event.observe('singleEvalueForm', ...)  
       // versucht, tuts auch nicht  
	Event.observe($('singleEvalueForm'),'change',function(evt){	  
              //  funktionsname habe ich mit 'event' auch versucht  
		handelFormChange(evt);  
	});  
  
}  
function handelFormChange(ev){  
		  
	if(!ev){ ev = window.event; } // ich habe mit UND ohne diesen Befehl versucht  
	$(ev.target.id).setStyle({'backgroundColor': '#FFD9D7'});  
	  
}  
  
Event.observe(window, 'load', addObservers);  

Zum Aufruf der Methode Observe habe ich auch mit anderen Alternativen, nämlich $('form_id').observe('change', ...) versucht, tuts nimmer...

Es funktioniert einwandfrei unter FF3 , Chrom und Safari 4, aber unter
IE8( auch IE7-Mode ) nicht, der Browser tuts garnichts, auch keine Fehlermeldung.

Ich bin total neu in Javascript sowie Prototype, keine Ahnung was sonst noch hier fehlt, bitte um Ihre Hinweise.. Vielen Dank im Voraus

  1. Laut SELFHTML ist der onchange Eventhandler nur in INPUT-, SELECT- und TEXTAREA-Tags erlaubt.

    Um alle Formularfelder zu erwischen könntest du mit Prototype folgendes probieren:

      
    function addObservers() {  
        $$('#singleEvalueForm input, textarea, select').each(function(obj) {  
            $(obj).observe('change', function(evt) {  
                handelFormChange(evt);  
            });  
        });  
    }  
    
    

    ^^ ungetestet

    1. Vielen Dank für deine Hilfe, ich werde dies umgehend testen.
      Heißt es dass es bei mir unter FF/CHrome/Safari funktioniert ist nur ein Zufall ?
      Danke noch mal.

      Grüße
      Pei

      Laut SELFHTML ist der onchange Eventhandler nur in INPUT-, SELECT- und TEXTAREA-Tags erlaubt.

      Um alle Formularfelder zu erwischen könntest du mit Prototype folgendes probieren:

      function addObservers() {
          $$('#singleEvalueForm input, textarea, select').each(function(obj) {
              $(obj).observe('change', function(evt) {
                  handelFormChange(evt);
              });
          });
      }

      
      >   
      > ^^ ungetestet
      
      1. Hi,

        Heißt es dass es bei mir unter FF/CHrome/Safari funktioniert ist nur ein Zufall ?

        nein, das heißt, dass diese Browser über die Spezifikationen hinaus implementiert wurden.

        Laut SELFHTML ist der onchange Eventhandler nur in INPUT-, SELECT- und TEXTAREA-Tags erlaubt.

        Zufall ist höchstens, dass Du vergessen hast, die Textteile des Vorgängerpostings zu löschen, auf die Du Dich nicht beziehst ... nachdem Du vergessen hast, dass in Mitteleuropa üblicherweise von oben nach unten gelesen wird, nicht von der Mitte nach unten und danach von oben bis zur Mitte. Oder?

        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
        1. nein, das heißt, dass diese Browser über die Spezifikationen hinaus implementiert wurden.

          Das ist ja richtig...

          Zufall ist höchstens, dass Du vergessen hast, die Textteile des
          Vorgängerpostings zu löschen, auf die Du Dich nicht beziehst ... nachdem Du »»vergessen hast, dass in Mitteleuropa üblicherweise von oben nach unten »»gelesen wird, nicht von der Mitte nach unten und danach von oben bis zur »»Mitte. Oder?

          Es tut mir Leid, bin neu hier und kennt den Regel nicht so gut.

    2. Um alle Formularfelder zu erwischen könntest du mit Prototype folgendes probieren:

      function addObservers() {
          $$('#singleEvalueForm input, textarea, select').each(function(obj) {
              $(obj).observe('change', function(evt) {
                  handelFormChange(evt);
              });
          });
      }

        
        
      Ich habe es getestet, jetzt funktioniert es bei FF 3.x, IE 8, Safari 4 und Chrome.  
      Herzlichen Dank !  
        
      Grüße  
      Pei  
        
      
      
    3. Hi,

      Um alle Formularfelder zu erwischen könntest du mit Prototype folgendes probieren:

      function addObservers() {
          $$('#singleEvalueForm input, textarea, select').each(function(obj) {

        
      Die Einschränkung, dass es nur für INPUT-Elemente in einem bestimmten Formular, aber für alle TEXTAREAs und SELECT im gesamten Dokument gemacht werden soll, scheint mir eine recht inkonsequente.  
        
      MfG ChrisB  
        
      
      -- 
      “Whoever best describes the problem is the person most likely to solve the problem.” [Dan Roam]