我是 Jquery 的新手,我想在 jsf 中做一个占位符,如下所示:http://niklaskoehler.de/demos/vordefinierter-text/ 。我有下一个代码:
<head>
<script type="text/javascript">
jQuery(document).ready(function() {
var $ = jQuery;
var Element = "#email";
var InputText = "Placeholder demo";
$(Element).val(InputText);
alert("sup bro"); //this alert works
$(Element).bind('focus',function(){
$(this).addClass('focus');
if($(this).val()==InputText){
$(this).val('');
}
}).bind('blur',function(){
if($(this).val()==""){
$(this).val(InputText);
$(this).removeClass('focus');
}
});
});
</script>
</head>
这是我的表格:
<h:form>
<div class="form-item">
<h:inputText id="email" title="Email" value="#{UserAction.email}"/>
</div>
</h:form>
输入没有任何反应,我的代码出了什么问题?
最佳答案
jQuery 不适用于服务器端的 JSF 组件树。相反,它在客户端使用 HTML DOM 树。对于 JSF,您应该在编写 jQuery 时查看 JSF 生成的 HTML 输出。当您遇到不可预测的 HTML 元素 ID(例如 pbGfb9435b3_2d720d_2d478d_2d8183_2d657b3839216b_j_id1:j_idt5:email
)时,您可能正在运行 JSF portlet 而不是 servlet。 pgXxx
ID 前缀仅出现在 portlet 上。
忠告一下,不要通过 ID 选择非唯一元素。改为按类名称选择。
例如
<h:inputText ... styleClass="email" />
与
var selector = ".email";
var inputText = "Placeholder demo";
$(selector).val(inputText);
(我冒昧地修复了糟糕的变量名称;它们不应该以大写字母开头,并且 CSS 选择器不是一个元素)
另请参阅:
关于java - JSF 2.0 中的 Jquery,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16858805/