gpt4 book ai didi

javascript - 被 JavaScript 隐藏的必需 JSF 输入组件仍然经过验证

转载 作者:行者123 更新时间:2023-12-02 19:32:33 25 4
gpt4 key购买 nike

我有一个值列表,从值列表中我想检查一些值意味着相应的文本框将显示在底部。否则文本框将被隐藏。我已经使用javascript完成了这个过程。但我的问题是我必须使用 required=true 属性进行验证。但问题是隐藏的文本框也经过验证。

列表值的 Primefaces 页面:

     <p:selectManyCheckbox onchange="checkValue();" value="#{volunteerBean.knowAbt}" layout="pageDirection" id="s" immediate="true" required="true" requiredMessage="Select how to konws about cv?" style="width:300px;height:170px;">
<f:selectItems value="#{volunteerBean.hearLst}" var="he" itemLabel="#{he}" itemValue="#{he}" />
<p:ajax event="change" update="msg1111" />
</p:selectManyCheckbox>

输入文本框编码:

    <p:inputText style="display:none;" id="searchEngine" value="#{volunteerBean.searchEngine}"><p:watermark for="searchEngine" value="Search Engine"/>

通过检查checkBox列表来隐藏和显示inputText的JavaScript:

    function checkValue() {
var chk = document.getElementById("volunteerForm:s:10");
if (chk1.checked) {
document.getElementById('volunteerForm:searchEngine').style.display='';
}else {
document.getElementById('volunteerForm:searchEngine').style.display='none';
}
}

我正在使用 primefaces 3.0 和 jsf 2.0。怎么解决

最佳答案

您仅更改 HTML DOM 树,而不更改 JSF 组件树。 JSF 根本不知道 HTML 元素已隐藏在客户端。您需要通过其 rendered 显示/隐藏 JSF 组件属性并将其客户端 ID 包含在 <p:ajax update> 中.

<p:selectManyCheckbox ... value="#{volunteerBean.knowAbt}">
<f:selectItems value="#{volunteerBean.hearLst}" />
<p:ajax event="change" update="msg1111 searchEngine" />
</p:selectManyCheckbox>

<p:inputText id="searchEngine" ... rendered="#{volunteerBean.knowAbt.contains('valueOfItem10')}" />

哪里valueOfItem10是索引 10 处的项目的确切值,就像您尝试在 JS 中检查一样。请注意,我假设 knowAbtList<String> ,与您的 hearLst 完全相同建议(我已从上面的示例中删除了多余的 varitemLabelitemValue ,因为它们已经是默认值)。否则,您需要在支持 bean 的辅助方法中执行该作业。

关于javascript - 被 JavaScript 隐藏的必需 JSF 输入组件仍然经过验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11328585/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com