当我使用jquery时,OnChange事件不会触发

时间:2015-08-28 21:34:05

标签: jquery datepicker xpages lotus-notes

我正在制作我的第一个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;
    }
}

0 个答案:

没有答案