java - 如何在 JSF 输入字段中创建阴影

标签 java javascript css jsf jsf-2

我在 oracle.com 网站上注册了帐户,我看到了一些非常有趣的东西: enter image description here

在表单中查看电话号码的输入字段。我如何将相同的内容复制到 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> 中标签?

最佳答案

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

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

这当然只适用于支持 HTML5 的浏览器。使用 JSF 时,这仅适用于支持新 HTML5 的 JSF 组件 placeholder属性。标准 JSF <h:inputText>本身不支持这个(还)。您需要寻找支持此功能的第 3 方组件库。其中有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>正在幕后进行。

关于java - 如何在 JSF 输入字段中创建阴影,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10489627/

相关文章:

javascript - Angular 2+ ngModel 仅使用对象括号表示法在嵌套值上绑定(bind)动态 ngModel 的一种方式

javascript - jquery 在内容增加时移动弹出窗口

javascript - 使用react-leaflet 2.0进行标记聚类(Leaflet.markercluster)

html - 将左侧 float div 中的图像与右侧 float div 中的文本垂直对齐

java - 我删除了必要的构造函数,但它仍然可以编译并运行

java - 如何使用easymock进行hashmap

javascript - 动态添加按钮后刷新 jQm header

css - 对齐导航栏的 <UL>

java - 为属性创建构造函数与仅创建属性并使用默认构造函数

java - 单击按钮Android后绘制