3

我在 oracle.com 网站上注册了帐户,我看到了一些非常有趣的东西: 在此处输入图像描述

在表格中查看电话号码的输入字段。如何将其复制到 JSF 输入表单中?这是CSS制作的吗?

代码更新

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"   
      xmlns:h="http://java.sun.com/jsf/html">
    <h:head>
        <script type="text/javascript">
            <!-- input field shadow  -->
            var placeholder = "test field"
            $("input").on({
                focus: function() {
                    if (this.value == placeholder) {
                        $(this).val("").removeClass("shadow");
                    }
                },
                blur: function() {
                    if (this.value == "") {
                        $(this).val(placeholder).addClass("shadow");
                    }
                }
            }).trigger("blur");​            
        </script>       

    </h:head>

    <h:body>
        <h1>JSF 2 textbox example with shadow</h1>

        <h:form>
            <h:inputText value="#{userBean.userName}" />
            <h:commandButton value="Submit" action="user" />
        </h:form>

    </h:body>
</html>

我测试了这段代码,但它不起作用。也许我需要将 JavaScript 代码作为函数调用到<h:inputText>标签中?

4

3 回答 3

5

这是自 HTML5 以来的新功能。就是placeholder属性,在HTML5时代之前也被称为“水印”。

<input type="text" name="phone" placeholder="e.g. +994 (12) 491 2345" />

这当然只适用于支持 HTML5 的浏览器。使用 JSF 时,这只适用于支持新 HTML5placeholder属性的 JSF 组件。标准的 JSF<h:inputText>本身(还)不支持这个。您需要寻找支持此功能的 3rd 方组件库。其中包括PrimeFaces及其<p:watermark>组件:

<h:inputText id="phone" value="#{register.user.phone}" />  
<p:watermark for="phone" value="e.g. +994 (12) 491 2345" />  

这将检查是否支持 HTML5 然后使用placeholder,否则会引入一些 JS/jQuery 魔术来模拟相同的。这一切都不是由 CSS 完成的。

如果由于某种原因不能使用 PrimeFaces,您需要自己重新发明它,以自定义组件和/或自定义 JS/jQuery 片段的风格,就像<p:watermark>在幕后所做的那样。

于 2012-05-07T22:06:31.570 回答
2

我认为他们正在使用 jquery 的水印来做到这一点。附件是该页面的萤火虫视图,它显示

水印文本字段

于 2012-05-07T22:03:19.310 回答
2

如果您无法使用 PrimeFaces,正如@BalusC 所述,您可以使用这样的 JavaScript/jQuery 代码:

var placeholder = "e.g. +358 (11) 123-45-67"
$("input").on({
    focus: function() {
        if (this.value == placeholder) {
            $(this).val("").removeClass("shadow");
        }
    },
    blur: function() {
        if (this.value == "") {
            $(this).val(placeholder).addClass("shadow");
        }
    }
}).trigger("blur");​

CSS 类shadow有 font ​color: #bbb

演示:http: //jsfiddle.net/rYAbU/

于 2012-05-07T22:18:52.647 回答