【问题标题】:Disable other inputtext on change of one inputtext更改一个输入文本时禁用其他输入文本
【发布时间】:2015-03-31 13:23:22
【问题描述】:

我将 JSF2.1 与 PrimeFaces 4.0 一起使用,但令人惊讶的是,我无法找到一个简单的解决方案,即如果另一个字段已被填充,如何禁用该字段。例如。如果我在“加数量”字段中输入一个数字,然后通过单击或使用选项卡离开该字段,则“减数量”字段应该被禁用。

我发现的只是做这样的事情

<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 中有一个内置的方法,但我找不到它......

【问题讨论】:

  • 如果你不想调用服务器(我会使用 p:ajax 而你也需要 value-attribute)并且不想自定义 JS 代码,我敢打赌你运气不好
  • 如果这些是唯一的可能性,那也没关系。我只是想可能还有其他方法。类似于内置的 jsf / PF 客户端验证。

标签: validation jsf jsf-2 primefaces


【解决方案1】:

但我觉得为这么简单的任务调用服务器有点繁重

衡量它而不是做出假设。

我也不想添加自定义 JS 代码

归根结底就是使用正确的工具来完成这项工作。除了&lt;p:ajax&gt;&lt;f:ajax&gt; 混合(&lt;f:ajax&gt; 不支持update 属性)之外,您到目前为止的代码看起来还不错。我只会使用&lt;p:ajax partialSubmit="true"&gt; 来减少请求负载,特别是如果这是一个相对较大的表单的一部分。

也许你最终会朝 JS 方向发展,请记住,在客户端启用/禁用 HTML DOM 元素不会启用/禁用服务器端的 JSF 组件。换句话说,当您使用纯 JS 这样做时,无论如何黑客仍然可以提交该值。在为某些任务考虑客户端或服务器端时,请始终牢记这一点。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-04-05
    • 1970-01-01
    • 2012-07-30
    • 2011-06-26
    • 1970-01-01
    • 2012-05-13
    • 1970-01-01
    相关资源
    最近更新 更多