看一个简单的JSF示例:
<h:form id="signup-form">
<h:inputText id="email" value="#{beanBean.email}" />
</h:form>
它将生成以下HTML代码:
<input id="signup-form:email" type="text" />
使用jQuery选择器获取电子邮件ID,但失败。
<script>
jQuery(document).ready(function($) {
$('#signup-form:email').checkEmailFormat();
});
</script>
解
这是集成JSF和jQuery的一个众所周知的问题-冒号“ :
”保留给jQuery选择器。 要使用jQuery seletor来获取JSF id,您需要在冒号前面加两个反斜杠来“ 逃脱 ”冒号:
<script>
jQuery(document).ready(function($) {
$('#signup-form\\:email').checkEmailFormat();
});
</script>
对于PrimeFaces
PrimeFaces带有一个转义JSF id的函数:
<script>
jQuery(document).ready(function($) {
$(PrimeFaces.escapeClientId('signup-form:emil')).checkEmailFormat();
});
</script>
此PrimeFaces.escapeClientId
函数来自primefaces.js
,请查看源代码,它只是一个包装js函数,用于在前面加上双反斜杠来替换冒号“:”。
escapeClientId:function(a){return"#"+a.replace(/:/g,"\\:")}
PS已通过PrimeFaces 3.3测试
参考文献
翻译自: https://mkyong.com/jsf2/primefaces/how-to-get-jsf-id-via-jquery/