我正在尝试实现两个JavaScript函数,当用户从p:calendar中选择日期时立即调用这些函数。
不幸的是,只有在用户手动输入日期并向前切换标签时才会处理onchange事件。onselect事件根本没有被触发。
以下是xhtml格式:
不幸的是,只有在用户手动输入日期并向前切换标签时才会处理onchange事件。onselect事件根本没有被触发。
以下是xhtml格式:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:p="http://primefaces.org/ui">
<h:head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<h:outputScript library="js" name="custom.js" target="body" />
</h:head>
<h:body>
<p:log />
<h:form id="someForm">
<p:panelGrid columns="2">
<p:outputLabel for="myCalendar" value="Date: " />
<p:calendar id="myCalendar" onchange="alertDateSelected()" onselect="alertSelectEvent()" showOn="button" />
</p:panelGrid>
</h:form>
</h:body>
</html>
onselect和onchange事件的Javascript代码:
function alertDateSelected() {
PrimeFaces.info('Selected date from p:calendar');
}
function alertSelectEvent() {
PrimeFaces.info('Clicked p:calendar date selection button');
}
是否有可能在p:calendar的onchange/onselect事件上进行钩子;例如,如果用户从日历面板或通过“今天”按钮选择日期,是否可以实现?如果可以,那么我做错了什么?
<p:inputText id="myInput" onchange="alertDateSelected()"/>
,那么 onchange 事件将被触发,并且您可以在 PrimeFaces 日志中看到预期的输出。在函数中添加断点后,确认了所报告的行为:如果您处理p:inputText
,则脚本会停止,但是如果您处理p:calendar
,则不会停止。如果事件没有被触发,请告诉我如何从控制台获取线索。我应该在哪里寻找提示? - fatdevelops