java - JSF 2.0 中的 Jquery

标签 java jquery jsf

我是 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/

相关文章:

java - ServletRequest.setAttribute 是否允许带句点的键名?

javascript - 在谷歌地图上绘制矩形区域

java - Primefaces 按钮意外提交整个页面

jsf - 在 JSF 中,有没有一种方法可以根据条件或参数向组件添加 passThroughAttribute?

java - 浮点错误会导致 'a/(double)b >= a/b' 失败吗?

java - 如何获得 8 位颜色?

java - 如何在 log4j.xml 中对收件人隐藏发件人电子邮件地址?

javascript - 如何每1秒刷新一次mysql帖子

javascript - 我怎样才能有两个带有两个 Canvas 的输入文本

jsf - Primefaces dataScroller 具有子组件的动态 id