2013-07-17 3 views
12

Ich habe diesen Eingang versteckt:jQuery Ereignis auf Wertänderung des Eingangs versteckt

<input id="j_idt26:myValue" type="hidden" name="j_idt26:myValue" value="0?100?"> 

Ich mag der Wert „hey“ zum ersten Mal aufmerksam zu machen gesetzt, und dann jedes Mal ändert.

Ich habe so etwas wie dies:

$(document).ready(function(){ 
    var $hello= $('[id$=myValue]'); 

    $hello.bind("change load", function(){ 
     alert('hey'); 
    }); 
}); 

Aber nichts zeigt nach oben.
Wenn Sie
Dank helfen

+0

Wie ändern Sie Eingabewert? Mit val() programmatisch? –

+0

Welche Version von Jquery verwenden Sie? –

+0

Ich verwende JQuery 1.8.3. Es ist eine JSF-Java-Anwendung, also ist es programmatisch. –

Antwort

16
$(function(){ 
    var $hello= $('[id$="myValue"]'); 

    $hello.on("change", function(){ //bind() for older jquery version 
     alert('hey'); 
    }).triggerHandler('change'); //could be change() or trigger('change') 
}); 

Dann wird jedes Mal, wenn Sie den Wert der gezielten versteckte Eingänge ändern, Trigger-Handler, zB:

$('#j_idt26:myValue').val('0?200?').triggerHandler('change'); 

Das ist, weil Onchange-Ereignis nicht automatisch ausgelöst wird, seinen Wert programmgesteuert ändern.

+0

Danke! Das ist die Antwort, weil ich den Wert programmgesteuert geändert habe;) –

0

Sie diesen Code versuchen:

$(function(){ 
    var $hello = $('[id$="myValue"]'); 

    $hello.bind("change load", function(){ 
     alert('hey'); 
    }); 
}); 
2

Das Änderungsereignis wird nach dem Ereignis blur an einem Eingang ausgelöst, dh wenn der Eingang den Fokus verliert. Die MDN-Dokumentation beschreibt dies:

Wenn das Element den Fokus verliert, nachdem sein Wert geändert wurde, aber nicht verpflichtet (z nach der Bearbeitung den Wert oder).

Seit input ist vom Typ versteckt es wird nie mit dem input jede Interaktion mit dem Benutzer, es sei denn, der Client-Seite Skript von Ihrer Website vorgesehen, wird sich nicht ändern Sinn ändert, was die Änderungsereignis nicht ausgelöst.

sind hier zwei Möglichkeiten:

Anrufänderung() explizit

Jedes Mal, wenn Sie den Wert des verborgenen Eingang Anruf ändern .change() das Ereignis auszulösen.

$(document).ready(function(){ 
    var $hello= $('[id$=myValue]'); 

    $hello.on("change", function(){ 
     alert('hey'); 
    }); 

    $hello.val("Something"); 
    $hello.change(); 
}); 

Rufen Sie einfach den Code ohne dass der HF

Statt den Ereignishandler verwenden nur den Code ausführen Sie innerhalb der Quelle haben würde.

Eine andere Sache, die ich erwähnen möchte, ist der Selektor kann ein wenig besser sein.

var $hello= $('input[id$=myValue]'); 

Und wenn Ihr eine neue Version von jQuery verwenden lieber on statt bind wie im obigen Beispiel gezeigt.

+0

@roasted Danke, dass ich diesen Teil des Codes entfernt habe –

1

Es ist sehr einfach:

$('#my_id').val(myValue).trigger('change'); 

Dann können Sie Änderungswert auf $ ('# my_id') erkennen