计算我的 xp:inputText 控件的字符数
Calculate number of characters of my xp:inputText control
我将我的 xp:inputText 控件绑定到视图范围。现在我想在用户输入 10 个字符时从按钮中删除禁用 属性 但 onkeypress 或 onchange 事件(服务器)似乎只在我离开输入控件时提交一些内容。
我该如何解决这个服务器端问题?
如果您确实寻求客户端解决方案,请将类似的内容放入您的页面或页面底部的自定义控件中。
<xp:scriptBlock>
setInterval(function () {
if(XSP.getElementById("#{id:textInputFieldName}").val().length > 9) {
XSP.getElementById("#{id:submitButtonName}").removeAttr("disabled");
} else {
XSP.getElementById("#{id:submitButtonName}").attr("disabled", "disabled");
}
}, 500); //Runs every 0.5s
</xp:scriptBlock>
这每 500 毫秒运行一次,并检查您输入的文本的长度是否大于 9 个字符。如果是,它会删除按钮的 disabled 属性,否则它会保留该属性。即使人们将数据复制并粘贴到字段中,这种方法也有效,而使用按键的解决方案可能无法拾取粘贴事件。
您需要更改元素的 ID。
在服务器端,您可以使用 onkeydown 事件并禁用部分刷新按钮。
<xp:inputText id="inputText1">
<xp:eventHandler event="onkeydown" submit="true"
refreshMode="partial" refreshId="button1">
<xp:this.action><![CDATA[#{javascript:print("keydown")}]]></xp:this.action>
</xp:eventHandler>
</xp:inputText>
<xp:button value="Label" id="button1"></xp:button>
我将我的 xp:inputText 控件绑定到视图范围。现在我想在用户输入 10 个字符时从按钮中删除禁用 属性 但 onkeypress 或 onchange 事件(服务器)似乎只在我离开输入控件时提交一些内容。
我该如何解决这个服务器端问题?
如果您确实寻求客户端解决方案,请将类似的内容放入您的页面或页面底部的自定义控件中。
<xp:scriptBlock>
setInterval(function () {
if(XSP.getElementById("#{id:textInputFieldName}").val().length > 9) {
XSP.getElementById("#{id:submitButtonName}").removeAttr("disabled");
} else {
XSP.getElementById("#{id:submitButtonName}").attr("disabled", "disabled");
}
}, 500); //Runs every 0.5s
</xp:scriptBlock>
这每 500 毫秒运行一次,并检查您输入的文本的长度是否大于 9 个字符。如果是,它会删除按钮的 disabled 属性,否则它会保留该属性。即使人们将数据复制并粘贴到字段中,这种方法也有效,而使用按键的解决方案可能无法拾取粘贴事件。
您需要更改元素的 ID。
在服务器端,您可以使用 onkeydown 事件并禁用部分刷新按钮。
<xp:inputText id="inputText1">
<xp:eventHandler event="onkeydown" submit="true"
refreshMode="partial" refreshId="button1">
<xp:this.action><![CDATA[#{javascript:print("keydown")}]]></xp:this.action>
</xp:eventHandler>
</xp:inputText>
<xp:button value="Label" id="button1"></xp:button>