【问题标题】:Using a widgetVar, how do I Disable or Enable PrimeFaces selectOneButton使用 widgetVar,我如何禁用或启用 PrimeFaces selectOneButton
【发布时间】:2018-04-09 08:09:43
【问题描述】:

我正在使用 PrimeFaces 6.1 widgetVar 来启用和禁用网页上的多个元素。我正在使用以下代码:

JavScript/jQuery:

PF('widget_select_one_button_1').getJQ().parent().removeAttr('disabled');
PF('widget_select_one_button_1')..getJQ().parent().attr("disabled", true);

XHTML:

<h:form id="form-1">
  <p:selectOneButton id="button-1" value="#{search.drawings}">
    <f:selectItems value="#{search.drawings}" var="x" itemLabel="#{drawings}" itemValue="#{drawings}"/>
  </p:selectOneButton>
</h:form>

我已验证我使用的是正确的widgetVar,因为我能够启用和禁用selectOneRadio。当我决定将 selectOneRadio 更改为 selectOneButton 时,我找不到任何有关如何启用或禁用该元素的信息。

我使用了上面显示的 JavaScript 的多种变体。我尝试在widgetVar 变量上调用.enable()/.disable(),然后使用我尝试添加和删除disabled 属性的jQuery 对象。我也对 jQuery 对象的父对象进行了同样的尝试(如上所示)。

有没有人知道如何启用或禁用selectOneButton

【问题讨论】:

  • 禁用客户端是危险的。服务器端它仍然处于启用状态。客户端可以通过 javascript 再次启用它

标签: javascript jquery jsf primefaces jsf-2


【解决方案1】:

我使用 css 选择器通过这些元素的后代搜索所有无线电输入,然后对每个项目应用禁用功能:

PF('yourWidgetVarName').getJQ().find('input[type="radio"]').each(function (index, element) { $(this).attr("disabled", true); });

见:https://api.jquery.com/find/

【讨论】:

  • 仅仅发布一些代码并不是很有帮助。你能解释一下你的代码吗?这样其他人就可以理解并从您的答案中学习,而不仅仅是从网络上复制和粘贴一些代码。
  • PF('yourWidgetVarName').enable() / PF('yourWidgetVarName').disable() 应该在 selectOneButton 上完美运行;)
  • @tandraschko 不在 PrimeFaces 6.1 上,请参阅 github.com/primefaces/primefaces/issues/2881
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-01
相关资源
最近更新 更多