0

我想实现 JQuery Datepicker。我在我的 JSF 代码中添加了 JavaScript。这是 HTML 输出:

<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"><head>
            <title>DX-57 History Center</title>
            <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
            <link rel="shortcut icon" type="image/x-icon" href="resources/css/themes/nvidia.com/images/favicon.ico" />
            <link href="resources/css/helper.css" media="screen" rel="stylesheet" type="text/css" />
            <link href="resources/css/dropdown.css" media="screen" rel="stylesheet" type="text/css" />
            <link href="resources/css/default.advanced.css" media="screen" rel="stylesheet" type="text/css" />

            <script type="text/javascript" src="resources/js/jquery-1.7.2.min.js"></script>
            <script type="text/javascript" src="resources/js/jquery-ui-1.8.18.custom.min.js"></script>
            <link href="resources/css/jquery-ui-1.8.18.custom.css" media="screen" rel="stylesheet" type="text/css" />
            <script type="text/javascript" src="resources/js/tabs.js"></script>
        <script type="text/javascript">
            $(function(){                                
                // Datepicker
                $('#datepicker').datepicker({
                    inline: true,
                    showWeek: true,
                    firstDay: 1
                });
            });            
        </script><script type="text/javascript" src="/test/javax.faces.resource/jsf.js.jsf?ln=javax.faces&amp;stage=Development"></script></head><body>
        <!-- demo inset for with validator -->
        <h1><img src="resources/css/images/icon.png" alt="NVIDIA.com" /> History Center</h1>
        <!-- layer for black background of the buttons -->
        <div id="toolbar" style="margin: 0 auto; width:1180px; height:30px; position:relative;  background-color:black">
            <!-- Include page Navigation -->
            <ul class="dropdown dropdown-horizontal" style="margin: 0 auto">
                <li><a href="/SR_57-1.0-SNAPSHOT/UserNav.jsf" class="dir">Home</a>
                    <ul>
                        <li><a href="Dashboard.jsf">Dashboard</a></li>
                    </ul>       
                </li>
                <li><a href="Sessions.jsf" class="dir">Sessions</a>
                </li>
                <li><a href="Application.jsf" class="dir">Application</a>
                    <ul>                
                        <li><a href="Glassfish.jsf">Glassfish</a></li>
                    </ul>
                </li>
                <li><a href="Linux.jsf" class="dir">Linux</a>                   
                </li>
                <li><a href="Database.jsf" class="dir">Database</a> 
                    <ul>                
                        <li><a href="History.jsf">History</a></li>
                    </ul>
                </li>                   
            </ul>          

        </div>  

        <div id="logodiv" style="position:relative; top:35px; left:0px;"><img src="resources/images/logo_databasez.png" alt="Demo Insert Form" style="position:relative; top:-20px; left:9px;" />
        </div>
        <div id="main" style="margin: 0 auto; width:1190px; height:700px; position:absolute;  background-color:transparent; top:105px">

            <div id="mainpage" style="margin: 0 auto; width:1190px; height:500px; position:absolute;  background-color:transparent; top:80px">

                <div id="settingsHashMap" style="width:350px; height:400px; position:absolute;  background-color:r; top:20px; left:1px">
<form id="j_idt13" name="j_idt13" method="post" action="/test/Database.jsf" enctype="application/x-www-form-urlencoded">
<input type="hidden" name="j_idt13" value="j_idt13" />

                        <div id="settingsdiv" style="width:750px; height:400px; position:absolute;  background-color:r; top:20px; left:1px"><table>
<tbody>
<tr>
<td>Session ID</td>
<td><input id="j_idt13:sessionid" type="text" name="j_idt13:sessionid" onblur="mojarra.ab(this,event,'blur',0,'j_idt13:sessionidMessage')" /><span id="j_idt13:sessionidMessage"></span></td>
</tr>
<tr>
<td>Date</td>
<td><input id="j_idt13:datepicker" type="text" name="j_idt13:datepicker" /></td>
</tr>
<tr>
<td>Login Time</td>
<td><input id="j_idt13:logintime" type="text" name="j_idt13:logintime" /></td>
</tr>
<tr>
<td>Last Refresh Time</td>
<td><input id="j_idt13:lastrefreshtime" type="text" name="j_idt13:lastrefreshtime" /></td>
</tr>
<tr>
<td>User IP</td>
<td><input id="j_idt13:userip" type="text" name="j_idt13:userip" /></td>
</tr>
</tbody>
</table>


                        </div>   

                        <div id="settingstwodiv" style="width:150px; height:60px; position:absolute;  background-color:transparent; top:380px; left:800px"><input type="submit" name="j_idt13:j_idt32" value="Create User" />

                        </div><input type="hidden" name="javax.faces.ViewState" id="javax.faces.ViewState" value="7591771537138283258:6254434046150824528" autocomplete="off" />
</form> 

                </div>   

            </div>  
        </div></body>
</html>

但是当我点击输入文件时,什么也没有发生。有什么遗漏吗?在我发现日历<div id="datepicker"></div>用于显示的示例中。我在示例中使用输入字段。

最好的祝愿

编辑

我添加div以仅可视化日历。

我在div这里添加了:

<h:panelGrid columns="2">
                                <h:panelGroup>Session ID</h:panelGroup>
                                <h:panelGroup>
                                    <h:inputText id="sessionid" value="#{DatabaseController.formMap['sessionid']}" 
                                                 validator="#{ValidatorController.validatebean}">                                        
                                        <f:ajax event="blur" render="sessionidMessage" />                                          
                                    </h:inputText>
                                    <h:message id="sessionidMessage" for="sessionid" />
                                </h:panelGroup>

                                <h:panelGroup>Date</h:panelGroup>
                                <h:panelGroup>
                                     <div id="datepicker"></div>
                                    <h:inputText id="datepicker" value="#{DatabaseController.formMap['userid']}" >                                       
                                    </h:inputText>
                                </h:panelGroup>

                                <h:panelGroup>Login Time</h:panelGroup>
                                <h:panelGroup>
                                    <h:inputText id="logintime" value="#{DatabaseController.formMap['logintime']}" >
                                        <f:validateLength minimum="0" maximum="35"/>
                                    </h:inputText>
                                </h:panelGroup>

                                <h:panelGroup>Last Refresh Time</h:panelGroup>
                                <h:panelGroup>
                                    <h:inputText id="lastrefreshtime" value="#{DatabaseController.formMap['lastrefreshtime']}" >
                                        <f:validateLength minimum="0" maximum="35"/>
                                    </h:inputText>
                                </h:panelGroup>

                                <h:panelGroup>User IP</h:panelGroup>
                                <h:panelGroup>
                                    <h:inputText id="userip" value="#{DatabaseController.formMap['userip']}" >
                                        <f:validateLength minimum="0" maximum="15"/>
                                    </h:inputText>
                                </h:panelGroup>

                            </h:panelGrid> 

在此处输入图像描述

我想在这里打开这个例子的日历- 当我点击输入字段时。

似乎还有其他方法可以在 JSF 中调用日历。

编辑 2

这个 JavaScript 是否正确?

function calendar(){                                
    // Datepicker
    datepicker({
        inline: true,
        showWeek: true,
        firstDay: 1
    });
}

我将使用以下代码调用它:

<h:inputText onclick="calendar" value="#{DatabaseController.formMap['userid']}" > 
4

6 回答 6

3

此处错过了 datepicker id。你打电话给错误的 id 。像这样尝试,你:在你的属性中使用,通过使用斜杠

$(function(){
    $('#j_idt13\\:datepicker').datepicker({
        inline: true,
        showWeek: true,
        firstDay: 1
    });
});    
于 2012-05-16T09:19:44.040 回答
2
 <script type="text/javascript">
            $(function(){                                
                // Datepicker
                $('#j_idt13:logintime').datepicker({
                    inline: true,
                    showWeek: true,
                    firstDay: 1
                });
            });            
        </script>

改成这样。你的选择器错了。

于 2012-05-16T09:19:37.690 回答
2

您需要将“#datepicker”设置为输入框的ID。

例如

        $(function(){                                
            // Datepicker
            $('#j_idt13:datepicker').datepicker({
                inline: true,
                showWeek: true,
                firstDay: 1
            });
        }); 

我建议研究jquery 选择器

于 2012-05-16T09:19:48.880 回答
2

HIya演示 http://jsfiddle.net/8Hp26/

你的 id 不同,看起来你正在使用某种模板或用户控制器来生成 html,在演示中我添加了一个新的 class = foo 或者你可以尝试:在你的 JQuery 中转义。

注意使用转义添加\\:,但添加类应该像演示中所示的那样做。

希望这可以帮助。

代码

 $(function(){                                
            // Datepicker
          //  $('#datepicker').datepicker({
         $('.foo').datepicker({                
                inline: true,
                showWeek: true,
                firstDay: 1
            });
        });​
于 2012-05-16T09:22:02.337 回答
1

您输入字段的 id 不是datepickerbut j_idt13:datepicker。调用 datepicker 组件时必须使用此 id:

$(function(){
    $('#j_idt13\\:datepicker').datepicker({
        inline: true,
        showWeek: true,
        firstDay: 1
    });
});          

\\用于转义jQuery ,:否则它会被 jQuery 使用。

但是,我建议使用没有 :其中的 id。

于 2012-05-16T09:18:47.257 回答
0

这是特定于 JSF 的。您必须使用styleClass="datepicker"才能调用#datepickerJS。

于 2012-05-16T18:24:30.807 回答