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 :input
s nicht funktioniert p:selectOneMenu
s.
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:selectOneMenu
s 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
Du musst angemeldet sein, um einen Kommentar abzugeben.
Warum müssen Sie zusätzliche Listener, wenn das framework bereits zur Verfügung gestellt, die Sie mit solchen?
Wenn Ihr Ziel ist, die jQuery verwenden Sie einfach Ihre handler in eine js-Datei zugänglich aus dem Fenster globalen Geltungsbereich.
Dann rufen Sie Ihren handler
onchange
, vorbei an derselectOneMenu
als parameterInformationsquelleAutor kidwon
Anstelle von onChange, Sie könnte zu nutzen "DOMSubtreeModified".
Dies funktioniert für p:selectOneMenu
Auch. Eine andere Möglichkeit, wenn Sie wollen, dass die gleichen generischen code überall zu überschreiben, der Prototyp des SelectOneMenu wie folgt:
InformationsquelleAutor Fraction
Müssen Sie widgetVar zu p:selectOneMenu mit ihm zu spielen in JS
dies Wird fügen Sie diesen code in Ihre Seite
Hoffe, das wird helfen.
InformationsquelleAutor Aalkhodiry