onChange-Funktion ist nicht definiert

Lesezeit: 2 Minuten

Benutzeravatar von Expedito
Expedito

Das muss etwas Einfaches sein. Ich habe im Internet gesucht und nur Syntaxfehler als Ursache für dieses Problem gefunden, aber ich kann keinen Syntaxfehler finden.

Hier ist das Javascript:

<script type="text/javascript" src="http://localhost/acrilart/javascript/jquery-1.6.4.min.js"></script>
<script type="text/javascript">
    $(document).ready(function(){
        function hi(){
            alert('hi');
        }
        hi();
    });
</script>

Und der HTML-Code:

<input type="text" name="cep" value="" id="cep" class="required cep field"
       onChange="hi()" />

Beim Seitenladen die Funktion hi heißt wie erwartet, aber mein onChange -Ereignis verursacht einen Firebug-Fehler, der besagt, dass die Funktion nicht definiert ist. Ich bin wirklich ratlos. Habe ich ‘hi’ falsch geschrieben?

  • Probieren und verwenden ; innerhalb von Einzeilerfunktionen, weil der Interpreter wissen muss, wo alles endet.

    – Mihai Stancu

    27. September 2012 um 12:23 Uhr

  • Vielen Dank für Ihre Antwort, aber nach dem Testen habe ich festgestellt, dass es mit und ohne Semikolon funktioniert.

    – Expedito

    27. September 2012 um 13:09 Uhr

Das hi Funktion ist nur im Geltungsbereich innerhalb der ready Ereignishandler. Verschieben Sie es außerhalb des Ereignishandlers oder behandeln Sie die Bindung dort (und entfernen Sie das Inline-Attribut des Ereignishandlers aus dem Markup):

$(document).ready(function(){
    function hi(){
        alert('hi');
    }
    $("#cep").on("change", hi);
});

Das hi Funktion ist nur in der definiert ready Block. Draußen existiert es nicht mehr.

Sie müssen Funktionsdefinitionen nicht einschließen .ready(), also einfach entfernen. Alternativ definieren Sie die Funktion wie folgt:

window.hi = function() {...}

<script src="http://code.jquery.com/jquery-latest.js"></script>

<script type="text/javascript"> 
function hi(){ 
    alert('hi'); 
} 
</script>

<input type="text" name="cep" value="" id="cep" class="required cep field" onKeyPress="javascript:hi();" />

Benutzeravatar des Absenders
Absender

onchange wird nur ausgelöst, wenn das Steuerelement unscharf ist. Versuchen onkeypress stattdessen.

$("#cep").on("change", function() {
   alert(1);
});

oder

<input type="text" name="cep" value="" id="cep" class="required cep field" 
onkeypress="hi()"  />

Verwenden Sie stattdessen die folgenden Ereignisse onchange:

- onkeyup(event)
- onkeydown(event)
- onkeypress(event)

Benutzeravatar von LeGEC
LeGEC

In deinem Codeblock:

<script type="text/javascript">
    $(document).ready(function(){
        function hi(){
            alert('hi');
        }
        hi();
    });
</script>

hi ist keine globale Funktion. Sie können nur innerhalb Ihres Bereichs darauf zugreifen function(){...}nicht von außen.

Da Sie jQuery verwenden, können Sie die Art und Weise ändern, wie Sie Ihre Funktion an die binden onChange Veranstaltung. Anstatt es über das HTML-Tag aufzurufen, können Sie schreiben:

<script type="text/javascript">
    $(document).ready(function(){
        function hi(){
            alert('hi');
        }
        hi();

        $('#cep').on( 'change', function(){ hi(); } );
    });
</script>

1431460cookie-checkonChange-Funktion ist nicht definiert

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy