更改一个输入文本时禁用其他输入文本
Disable other inputtext on change of one inputtext
我将 JSF2.1 与 PrimeFaces 4.0 一起使用,令人惊讶的是我无法找到一个简单的解决方案,即如果另一个字段已被填充,如何禁用一个字段。例如。如果我在 "plus quantity" 字段中输入一个数字,然后通过单击或使用 Tab 键离开该字段,则 "minus quantity" 字段应该被禁用。
我发现的就是做这样的事情
<p:inputText id="minusQty" disabled="#{not empty order.plusQty}"/>
<p:inputText id="plusQty" value="#{order.plusQty}">
<f:ajax update="minusQty" />
</p:inputText>
但我觉得为这样一个简单的任务调用服务器有点繁重。我也不想添加自定义 JS 代码。我想 JSF/PF 中有一个内置方法,但我找不到它...
but I find it a bit heavy to call the server for such a simple task
衡量它而不是做出假设。
I also don't want to add custom JS code
归根结底就是使用正确的工具来完成工作。您到目前为止的代码看起来还不错,除了 <p:ajax>
和 <f:ajax>
混合(<f:ajax>
不支持 update
属性)。我只会使用 <p:ajax partialSubmit="true">
来减少请求负载,尤其是当这是一个相对较大的表单的一部分时。
你最终可能会转向 JS 方向,请记住 enabling/disabling 客户端中的 HTML DOM 元素不会 enable/disable 中的 JSF 组件服务器端。换句话说,当您使用纯 JS 这样做时,黑客仍然可以提交该值。在为某些任务考虑客户端或服务器端时,请始终牢记这一点。
我将 JSF2.1 与 PrimeFaces 4.0 一起使用,令人惊讶的是我无法找到一个简单的解决方案,即如果另一个字段已被填充,如何禁用一个字段。例如。如果我在 "plus quantity" 字段中输入一个数字,然后通过单击或使用 Tab 键离开该字段,则 "minus quantity" 字段应该被禁用。
我发现的就是做这样的事情
<p:inputText id="minusQty" disabled="#{not empty order.plusQty}"/>
<p:inputText id="plusQty" value="#{order.plusQty}">
<f:ajax update="minusQty" />
</p:inputText>
但我觉得为这样一个简单的任务调用服务器有点繁重。我也不想添加自定义 JS 代码。我想 JSF/PF 中有一个内置方法,但我找不到它...
but I find it a bit heavy to call the server for such a simple task
衡量它而不是做出假设。
I also don't want to add custom JS code
归根结底就是使用正确的工具来完成工作。您到目前为止的代码看起来还不错,除了 <p:ajax>
和 <f:ajax>
混合(<f:ajax>
不支持 update
属性)。我只会使用 <p:ajax partialSubmit="true">
来减少请求负载,尤其是当这是一个相对较大的表单的一部分时。
你最终可能会转向 JS 方向,请记住 enabling/disabling 客户端中的 HTML DOM 元素不会 enable/disable 中的 JSF 组件服务器端。换句话说,当您使用纯 JS 这样做时,黑客仍然可以提交该值。在为某些任务考虑客户端或服务器端时,请始终牢记这一点。