计算我的 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>