0

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

输入没有任何反应,我的代码有什么问题?

4

2 回答 2

3

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

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

例如

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

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

(我冒昧地修复了糟糕的变量名;它们不应该以大写开头,并且 CSS 选择器不是元素)

也可以看看:

于 2013-05-31T14:17:28.340 回答
0

萨克,

执行相同的网页和视图源。

无论您找到什么 ID<input type='text' id='something'

将相同的 id 添加到您的 Jquery

var Element = "#something";

于 2013-05-31T14:08:48.223 回答