Auslösung Primefaces p:selectOneMenu onchange

Scheint es, Primefaces p:selectOneMenu Komponente umschließt den gerenderten HTML <select> - tag in einem div-Element und zeigt das ausgewählte Element als ein anderes label. Die vom Benutzer vorgenommenen änderungen spiegeln sich auf original <select> von javascript ich denke, was das onchange-Ereignis gebunden zu <select> nicht gearbeitet werden. So, meine folgende Bindung des onchange-Ereignis für alle :inputs nicht funktioniert p:selectOneMenus.

function applyChangeHandler() {
    $(':input').on('change', function() {
        console.log('on change: ' + this.id);
    });
}

Jedoch onchange-Attribut p:selectOneMenu ausgelöst wird. So Primefaces löst diese Prozedur unter der Haube (wieder glaube ich).

<p:selectOneMenu id="myList" onchange="console.log('selectOneMenu')">
    <f:selectItem itemLabel="val1" itemValue="val1"/>
    <f:selectItem itemLabel="val2" itemValue="val2"/>
</p:selectOneMenu>

Also meine Anforderung ist, irgendwie binden Sie das onchange-handler, um alle p:selectOneMenus aus applyChangeHandler () - Funktion oben. Oder kann es sein triggerred manuell mit Primefaces bestimmten API oder andere Möglichkeiten, die ich erwarten, von Euch zu teilen. Ansonsten eine schnelle Abhilfe ist die Verwendung von h:selectOneMenu statt.

Mein Ziel ist es, zu erkennen, "nicht gespeicherte änderungen auf der Seite". So script oben werden in einer gemeinsamen Vorlage als:

<p:outputPanel id="sc" autoUpdate="true">
    <script type="text/javascript">
        applyChangeHandler();
    </script>
</p:outputPanel>

InformationsquelleAutor Uluk Biy | 2013-01-22

Schreibe einen Kommentar