Using PrimeFaces 6, I am trying to filter my p:selectOneMenu when the user paste a value or when the user delete a value using CTRL + Backspace, in another word, when the value got changed anyhow.
Please find my below code.
<p:selectOneMenu id="providerURLDD" widgetVar="providerURLDD"
value="#{switchProviderBean.selectedProvider}"
panelStyle="width:240px" effect="fade" filter="true"
style="width:240px" filterMatchMode="contains"
required="true"
requiredMessage="#{msg['selectProvider']}">
<f:selectItem itemLabel="Select" />
<f:selectItems value="#{switchProviderBean.providerAccounts}"
var="providerAcc"
itemLabel="#{providerAcc.code}-#{providerAcc.switchAccountId}-#{providerAcc.name}"
itemValue="#{providerAcc.switchAccountId}" />
</p:selectOneMenu>
I also tried to use Javascript like this:
function getTextAreaSelection(textarea) {
var start = textarea.selectionStart,
end = textarea.selectionEnd;
return {
start: start,
end: end,
length: end - start,
text: textarea.value.slice(start, end)
};
}
function detectPaste(textarea, callback) {
textarea.onpaste = function() {
var sel = getTextAreaSelection(textarea);
var initialLength = textarea.value.length;
window.setTimeout(function() {
var val = textarea.value;
var pastedTextLength = val.length - (initialLength - sel.length);
var end = sel.start + pastedTextLength;
callback({
start: sel.start,
end: end,
length: pastedTextLength,
text: val.slice(sel.start, end)
});
}, 1);
};
}
var textarea = document.getElementById("switchProviderChoice:providerURLDD_filter");
detectPaste(textarea, function(pasteInfo) {
console.log('perform filter');
PF('providerURLDD').filter();
});