Event.observe() kann kein 'change'-event fassen
Pei
- javascript
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
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
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
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
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.
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
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]