我正在制作我的第一个xpage网站,并且我制作了一个自助主题网站。 我有一个输入字段有一个onchange事件,我想对周围的xp:面板执行部分刷新。 这是按预期工作的。
然后我尝试添加jquery datepicker插件,它似乎工作但现在onchange事件不再触发,xp:面板不再刷新 - 你能帮助我理解为什么以及如何使这个工作? / p>
xpages代码如下所示:
(在我的面部配置中,我已经定义了一个指向ServerBean类的托管bean服务器)
<xp:panel id="dataForm">
<xp:panel styleClass="form-group">
<xp:label value="Date" for="mydate" styleClass="control-label col-lg-2"></xp:label>
<xp:panel styleClass="col-lg-3">
<xp:panel styleClass="input-group">
<xp:inputText styleClass="form-control form-date" id="mydate" value="#{Server.mydate}">
<xp:eventHandler event="onchange" submit="true" refreshMode="partial" refreshId="dataForm">
<xp:this.action><![CDATA[#{javascript:ServerBean.updateDate()}]]></xp:this.action>
</xp:eventHandler>
</xp:inputText>
</xp:panel>
</xp:panel>
</xp:panel>
<xp:panel styleClass="form-group" rendered="#{Server.showOldDatePanel}">
.... some other xpage stuff
</xp:panel>
</xp:panel>
当我应用这样的jquery datepicker插件时:
$(document).ready(function() {
$('.form-date').datepicker();
})
onchange事件停止触发 - 如果我删除了datepicker插件,则onChange事件再次起作用。
我需要触发onChange事件的原因是我有另一个xp:面板,只有在日期超过2年后才能呈现。
我不知道我在这里做错了什么,它可能是dojo和jquery事件处理og之间的冲突因为我使用部分刷新错误或其他东西
编辑:
在xpage代码和值映射中添加了render属性 - 我之前删除了它们以使代码更小。
服务器上的onChange代码在这里,并且在禁用datepicker插件时它可以正常工作
public class ServerBean implements Serializable {
private static final long serialVersionUID = 7642643485650569816L;
private String mydate;
private boolean showOldDatePanel;
public void updateDate() {
showOldDatePanel = false;
try {
if (mydate != null) {
DateTime date = getDateTime(mydate);
DateTime twoYearsAgo = Utilities.getToday();
twoYearsAgo.adjustYear(-2);
if (date.timeDifference(twoYearsAgo) < 0) {
showOldDatePanel = true;
}
}
} catch (NotesException e) {
}
}
private DateTime getDateTime(String dateTimeStr) {
try {
Session session = DominoUtils.getCurrentSession();
DateTime dt = session.createDateTime(dateTimeStr);
return dt;
} catch (NotesException e) {
//Don't do anything
}
return null;
}
public String getMydate() {
return mydate;
}
public void setMydate(String mydate) {
this.mydate = mydate;
}
public boolean isShowOldDatePanel() {
return showOldDatePanel;
}
public void setShowOldDatePanel(boolean showOldDatePanel) {
this.showOldDatePanel = showOldDatePanel;
}
}