大多數旅遊網站上都提供了一個城市和日期輸入查詢的功能。使用者在輸入框中只需輸入城市的拼音或簡稱就可以即時查詢到相關城市的名稱,選擇日期時則是出現兩個月的日曆控件,只需點選日期即可,整個操作簡捷明了。
本文用到了jquery ui庫的datepicker插件來控制日曆以及輸入城市提示的插件。
XHTML
<div class="qline"> <label for="arrcity">出发城市:</label><input type="text" name="arrcity" class="input" id="arrcity" /> <div id="suggest" class="ac_results"></div> <label for="city2">目的城市:</label><input type="text" name="city2" class="input" id="city2" /> <div id="suggest2" class="ac_results"> </div> </div> <div class="qline"> <label for="startdate">出发日期:</label><input type="text" name="startdate" class="input" id="startdate" /> <label for="enddate">返回日期:</label><input type="text" name="enddate" class="input" id="enddate" /> </div>
設計城市和日期的輸入框,注意使用了div#suggest和div#suggest2兩個DIV是用來顯示城市列表的,預設CSS控制為不顯示。
CSS
.input{border:1px solid #999} .qline{line-height:24px; margin:10px} #suggest,#suggest2{width:200px;} .gray{color:gray;} .ac_results {background:#fff;border:1px solid #7f9db9;position: absolute; z-index:10000;display: none;} .ac_results ul{margin:0;padding:0;list-style:none;} .ac_results li a{white-space: nowrap;text-decoration:none;display:block; color:#05a;padding:1px 3px;} .ac_results li{border:1px solid #fff; line-height:18px} .ac_over,.ac_results li a:hover {background:#c8e3fc;} .ac_results li a span{float:right;} .ac_result_tip{border-bottom:1px dashed #666;padding:3px;}
上述樣式主要是控制城市查詢的外觀,而日曆控制項的樣式我們單獨使用jquery ui的樣式:
<link rel="stylesheet" type="text/css" href="css/jquery-ui.css" />
jQuery
首先要引用主要javascript:
<script type="text/javascript" src="js/jquery.js"></script> <script type="text/javascript" src="js/jquery-ui.js"></script> <script type="text/javascript" src="js/aircity.js"></script> <script type="text/javascript" src="js/j.suggest.js"></script>
注意aircity.js是以陣列的形式儲存城市名稱等資料。 j.suggest.js是控制輸入查詢城市的,大家可以直接下載使用。
主要看下頁面使用jQuery。
$(function(){ $("#arrcity").suggest(citys,{ hot_list:commoncitys, attachObject:"#suggest" }); $("#city2").suggest(citys,{ hot_list:commoncitys, attachObject:"#suggest2" }); });
上述程式碼實現了輸入查詢城市,呼叫城市資料的功能。 hot_list:commoncitys是指初始的熱門城市,attachObject:"#suggest"是設定輸入時關聯的顯示城市清單的DIV。
接下來要加入控制日曆的程式碼。
我們需要控制日曆的有效日期,即顯示當前日期,在當前日期前的日期都不能選中,因為你不可能選擇已經過去的日期作為出發日期。還有就是要顯示連續的兩個月的日曆。程式碼如下:
today=new Date(); var year = today.getFullYear(); var month = today.getMonth(); var day = today.getDate(); $("#startdate,#enddate").css("color","#aaa").attr("value","yyyy-mm-dd"); $("#startdate,#enddate").datepicker({ minDate: new Date(year, month, day+1), numberOfMonths: 2, onClose:function(){ $(this).css("color","#000"); } });
程式碼首先取得了目前日期(即今天),然後初始日期輸入框的內容和樣式,再呼叫detepicker插件,設定最小日期為目前日期,設定numberOfMonths為連續的兩個月,此外當選取日期後,呼叫函數將輸入框的樣式改變。將以上程式碼追加到城市輸入查詢代碼的後面即可。
如此,你的城市和日期選擇功能已經實現。本文未涉及日期的驗證,如返回日期不能小於出發日期,這就留給大家去想吧。
以上就是如何使用jQuery實現城市查詢和日曆顯示的整個流程,希望對大家的學習有所幫助。