我有一个来自核心控件的选项卡式面板,里面是一个<xp:inputText>
它有一个用于限制字段长度的 jQuery 钩子。当我将页面更改为编辑模式时,如果屏幕上有此选项卡,效果会很好。但是,如果我不在该选项卡上并切换到编辑模式,然后更改到我想要的选项卡,则它不起作用。
我认为这是因为 jQuery 启动时这些控件不存在。有人知道如何让 jQuery 刷新自身以获取初始加载时不存在的新 DOM 添加吗?
这是页面上方的代码:
<xp:scriptBlock id="scriptBlock1">
<xp:this.value><![CDATA[$('input[maxlength]').maxlength({
alwaysShow: true,
threshold: 10,
warningClass: "label label-success",
limitReachedClass: "label label-danger"
});]]></xp:this.value>
</xp:scriptBlock>
该字段是这样的:
<xp:inputText id="inputText2"
value="#{viewScope.vsWorkingContentAdd.description}">
<xp:this.attrs>
<xp:attr name="maxlength" loaded="true" value="75"></xp:attr>
</xp:this.attrs>
</xp:inputText>
同样,该代码可以正常工作,因为它找到了已经存在的字段。这个问题是关于在 XPage 中进行部分刷新和<xp:inputText>
出现了,如何让 jQuery 看到它呢?
您是正确的,具有通过 javascript 分配的属性和事件的对象在部分刷新期间重新加载后需要重新分配它们。您可以修改脚本块,使其看起来像这样:
function setValidation() {
$('input[maxlength]').maxlength({
alwaysShow: true,
threshold: 10,
warningClass: "label label-success",
limitReachedClass: "label label-danger"
});
}
$(document).ready(function() {
setValidation(); // On page load
dojo.subscribe('partialrefresh-complete', function(method, form, refreshId, options) {
setValidation(); // On partial refresh
});
});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)