有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

JSF2.0中的JavajQuery

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

输入没有任何变化,我的代码有什么问题


共 (2) 个答案

  1. # 1 楼答案

    萨克

    执行网页和viewsource以获得相同的结果

    您将为<input type='text' id='something'找到的任何ID

    向Jquery添加相同的id

    var Element=“#某物”

  2. # 2 楼答案

    jQuery不能在服务器端使用JSF组件树。相反,它在客户端使用HTMLDOM树。对于JSF,您应该在编写jQuery时查看JSF生成的HTML输出。当您遇到像pbGfb9435b3_2d720d_2d478d_2d8183_2d657b3839216b_j_id1:j_idt5:email这样不可预测的HTML元素ID时,您可能运行的是JSFPortlet而不是servlet。pgXxxID前缀仅出现在portlet上

    作为建议,不要按ID选择非唯一元素,而是按类名选择

    例如

    <h:inputText ... styleClass="email" />
    

    var selector = ".email";
    var inputText = "Placeholder demo";
    $(selector).val(inputText);
    

    (我擅自修复了糟糕的变量名;它们不应该以大写字母开头,CSS选择器不是元素)

    另请参见: