Events abfragen

soa

Erfahrenes Mitglied
Hallo ,

suche nach einer Art listener, der nach gefüllten Elementen in einem Formular
horcht.

Wenn zum Beispiel ein Input Feld , eine Checkbox oder ein Select Feld einen Wert hat,
soll eine Funktion dies mitteilen.

Ist wahrscheinlich ziemlich simple umzusetzen. Mehr fehlt allerdings ein wenig der Ansatz.
Über eine Funktionsreferenz oder ein Codebeispiel wäre ich dankbar.


Vielen Dank im voraus.

SOA
 
Ich weiß nicht ob ich dich richtig verstanden habe. Das folgende Script ermittel die Anzahl der Formularelemente, prüft deren Typ und ob sie aktiviert sind oder einen Eintrag haben. Musst es nur noch erweitern, die Fleißarbeit überlasse ich dir ;).

Javascript:
function checker(){
         for (var i = 0; i < document.forms[0].length; ++i) {
              if (document.forms[0].elements[i].type == "checkbox"){
                  if (document.forms[0].elements[i].checked){
                      alert("Checkbox gefunden | Status: aktiviert");
                  } else {
                      alert("Checkbox gefunden | Status: nicht aktiviert");
                  }
              }
              if (document.forms[0].elements[i].type == "text"){
                  if (document.forms[0].elements[i].value != ""){
                      alert("Textfeld gefunden | Status: mit Eintrag");
                  } else {
                      alert("Textfeld gefunden | Status: ohne Eintrag");
                  }
              }
              .
              .
              usw.
              .
              .
         }
    }

Ich hoffe das du so etwas meinstest.
 
Zuletzt bearbeitet:
for (var i = 0; i < document.forms[formname].length; ++i) {

man weiss ja nie, obs nicht noch eins mehr gibt ... :)

und dann glaube ich muss man

document.forms[..].elements.length nehmen - habs aber nciht getestet

Dirk
 
Hallo ,


vielen Dank . Ist schon nicht schlecht.

Also so in der Richtung ist schon nicht schlecht:

PHP:
for (var i = 0; i < document.forms[0].length; ++i) {
wert = document.f1.elements[i];
if ( wert.type == "checkbox"){
i f (wert.checked){
.......

Ich möchte allerdings auch über eine Änderung informiert werden, also wenn ich ein Feld fülle, aber hinterher noch eine Ändrung eintrage.

Als Eventhandler würde ich da wohl onchange eignen.

Das Problem : Dieser übernimmt nicht sofort nach Änderung in einem Textfeld .
Man muss erst woanders hinklicken, damit die Änderung übernommen wird:

siehe hier:
http://de.selfhtml.org/javascript/sprache/anzeige/onchange.htm

Hierzu suche ich eine Lösung. Textänderungen müssen sofort erkannt werden.
Ebenso der Value eines Select feldes oder einer Checkbox.

Hat jmd. hierzu eine Idee ?

Vielen Dank.

Gruß
SOA
 
Hallo nochmal...

onKeydown funktioniert natürlich nicht bei Mausereignissen...

Aber ich denke, man kann auch mit verschiedenen Forms arbeiten und die
Funktionen über die Forms aufrufen.

Mit onkeydown hab ich auch so meine Probleme . Mit onclick funktioniert
nachstehender Code, mit onKeydown leider nicht:

PHP:
function text() {
if (document.f2.anzeige.value != ""){ 
alert("hello");
if (http != null) {
   http.open("POST", "ausgabe.php", true);
   http.onreadystatechange = ausgabeText;
   http.setRequestHeader(
      "Content-Type",
      "application/x-www-form-urlencoded");
   http.send("c=2222222"+document.f2.anzeige.value);
    }
}//end if
} //function

function ausgabeText() {
   if (http.readyState == 4) {
      document.getElementById("anzeigentext").innerHTML =
      http.responseText;
   }
}

Und hier der HTML Code dazu:

PHP:
<body onKeydown = "text()">
 <form name ="f2" >
 <textarea name="anzeige" cols="30" rows = "10"  ></textarea>
 <span id = "anzeigentext"></span>
 </form>
 
</body>
</html>

Leider reagiert das Formular überhaupt nicht ...
Bei gefülltem Inhalt und onClick als Handler geht es einwandfrei nach dem anklicken des
Feldes.

Wo liegt mein Fehler ?

Danke
 
Hi,

registrier den onkeydown-Event mal im Scriptbereich für das document-Objekt.
Code:
<script type="text/javascript">
<!--
// Bisheriger JS-Code

document.onkeydown = text;
//-->
</script>
Ciao
Quaese
 
Hallo,

das funktioniert: document.onkeydown = text;

Leider wird der letzte Buchstabe nie mit ausgegeben, was im Moment aber nicht so schlimm ist.

Leider funktioniert die Wahl des Erscheinungsdatums immer nur einmal.
Die Rubrikwahl kann ich hingegen beliebig oft ändern.

Woran könnte das wohl liegen ?

Meine Funktion:

PHP:
function check(){

   for (var i = 0; i < document.forms["f1"].length ; i++) {

                 
                  if (document.f1.erscheinung.value != ""){
                   erschein();  
                  }// end if
                  
                  if (document.f1.rubrik.value != ""){
                   sndReq();  
                  }// end if

} // end for

} // end of function


Dazu kommt noch, dass die Datei nur im Explorer läuft.
Im Firefox passiert nichts, obwohl mein JS aktiviert ist.

Mein XML Object erzeuge ich folgendermaßen:

PHP:
if (window.XMLHttpRequest) {
   http = new XMLHttpRequest();
} else if (window.ActiveXObject) {
   http = new ActiveXObject("Microsoft.XMLHTTP");
}

Hat jemand noch einen Tipp ?

VG
SOA
 

Neue Beiträge

Zurück