我有一个表单,其中的某些字段需要禁用,直到单击复选框.对于JSF元素,一切正常.问题在于素数元素.
对于像下拉列表这样的JSF元素,我这样做是这样的:
<h:selectOneMenu value="countryValue" disabled="true" id="countryId">
<f:selectItems value="countries" />
</h:selectOneMenu>
对于Primefaces元素,如下所示的压延机:
<p:calendar disabled="true" id="datePicker" value="dateValue"
pattern="yyyy-MM-dd" startWeekday="1"
timeZone="GMT">
</p:calendar>
我用来在事件上启用这些元素的JavaScript很简单:
function enableLocationUpdateFilter()
{
document.getElementById('form:datePicker').disabled = false;
}
jQuery调用onchange-event:
jQuery('.countryCheckBoxId').change(function()
{
enableCountryFilter();
});
通过研究Firebug中的Primefaces元素,我可以看到ID“ datePicker”仅充当“ span” ID,而HTML输入字段的实际ID为“ datePicker_input”.因此,通过在JavaScript中使用“ datePicker”作为ID,我尝试使用“ datePicker_input”.这将启用该字段,但是引发实际日历的jQuery事件不起作用.
看来日历是通过jquery-event调用的.在此jquery-event中,您可以看到默认禁用设置为true.我认为这就是问题所在,我不能将该部分设置为false.
解决方法:
我能想到的最好的办法是在服务器上进行Ajax调用,然后重新渲染日历.您能告诉我们是什么触发了这个jQuery-onchange事件吗?
我假设您正在使用JSF 2.0,对吗?
更新:
因此,您想在单击复选框时启用p:calendar.与此类似的东西应该起作用:
<h:selectBooleanCheckbox id="countryCheckBoxId" value="#{bean.countryBoolean}">
<f:ajax render="datePicker"/>
</h:selectBooleanCheckbox>
<p:calendar disabled="#{!bean.countryBoolean}" id="datePicker" value="dateValue"
pattern="yyyy-MM-dd" startWeekday="1" timeZone="GMT">
</p:calendar>
标签:jsf,primefaces,javascript 来源: https://codeday.me/bug/20191105/1997709.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。