更改一个输入文本时禁用其他输入文本

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 这样做时,黑客仍然可以提交该值。在为某些任务考虑客户端或服务器端时,请始终牢记这一点。