jQuery往返城市和日期查询实例讲解


Posted in Javascript onOctober 09, 2015

大多旅游网站上都提供了一个城市和日期输入查询的功能。用户在输入框中只需输入城市的拼音或者简称就可以即时查询到相关城市的名称,选择日期时则是出现两个月的日历控件,只需点选日期即可,整个操作简捷明了。
本文用到了jquery ui库的datepicker插件来控制日历以及输入城市提示的插件。

jQuery往返城市和日期查询实例讲解

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实现城市查询和日历显示的整个流程,希望对大家的学习有所帮助。

Javascript 相关文章推荐
JavaScript学习笔记(一) js基本语法
Oct 25 Javascript
artDialog+plupload实现多文件上传
Jul 19 Javascript
jquery 中toggle的2种用法详解(推荐)
Sep 02 Javascript
Vue2.x中的Render函数详解
May 30 Javascript
利用express启动一个server服务的方法
Sep 17 Javascript
浅谈webpack编译vue项目生成的代码探索
Dec 11 Javascript
基于React+Redux的SSR实现方法
Jul 03 Javascript
layui radio性别单选框赋值方法
Aug 15 Javascript
基于JS实现数字动态变化显示效果附源码
Jul 18 Javascript
弱类型语言javascript开发中的一些坑实例小结【变量、函数、数组、对象、作用域等】
Aug 07 Javascript
Layer组件多个iframe弹出层打开与关闭及参数传递的方法
Sep 25 Javascript
vue倒计时刷新页面不会从头开始的解决方法
Mar 03 Javascript
JS实现黑色风格的网页TAB选项卡效果代码
Oct 09 #Javascript
jQuery实现连续动画效果实例分析
Oct 09 #Javascript
jQuery控制DIV层实现由大到小,由远及近动画变化效果
Oct 09 #Javascript
jQuery拖动布局其结果保存到数据库
Oct 09 #Javascript
JS实现可展开折叠层的鼠标拖曳效果
Oct 09 #Javascript
JavaScript实现横向滑出的多级菜单效果
Oct 09 #Javascript
JS实现样式清新的横排下拉菜单效果
Oct 09 #Javascript
You might like
深入eAccelerator与memcached的区别详解
2013/06/06 PHP
php+mysqli使用面向对象方式更新数据库实例
2015/01/29 PHP
php实现多城市切换特效
2015/08/09 PHP
PHP中获取文件创建日期、修改日期、访问时间的方法
2016/11/05 PHP
javaScript 动态访问JSon元素示例代码
2013/08/30 Javascript
JS弹出对话框实现方法(三种方式)
2015/12/18 Javascript
深入理解关于javascript中apply()和call()方法的区别
2016/04/12 Javascript
js剪切板应用clipboardData实例解析
2016/05/29 Javascript
jQuery实现的瀑布流加载效果示例
2016/09/13 Javascript
从零学习node.js之express入门(六)
2017/02/25 Javascript
JS实现禁止用户使用Ctrl+鼠标滚轮缩放网页的方法
2017/04/28 Javascript
基于zepto.js实现手机相册功能
2017/07/11 Javascript
Vue组件开发之LeanCloud带图形校验码的短信发送功能
2017/11/07 Javascript
[00:43]拉比克至宝魔导师密钥展示
2018/12/20 DOTA
Python抓取框架Scrapy爬虫入门:页面提取
2017/12/01 Python
python smtplib模块实现发送邮件带附件sendmail
2018/05/22 Python
Python实现针对json中某个关键字段进行排序操作示例
2018/12/25 Python
python Pandas如何对数据集随机抽样
2019/07/29 Python
python获取整个网页源码的方法
2020/08/03 Python
python3爬虫中引用Queue的实例讲解
2020/11/24 Python
使用CSS3设计地图上的雷达定位提示效果
2016/04/05 HTML / CSS
canvas简易绘图的实现(海绵宝宝篇)
2018/07/04 HTML / CSS
德国价格合理的品牌商品购物网站:averdo
2019/03/21 全球购物
贝尔帐篷精品店:Bell Tent Boutique
2019/06/12 全球购物
如何估计一张表的大小(假设该表中有1万条数据)
2016/03/27 面试题
某科技软件测试面试题
2013/05/19 面试题
怎样在 Applet 中建立自己的菜单(MenuBar/Menu)?
2012/06/20 面试题
函授自我鉴定范文
2014/02/06 职场文书
擅自离岗检讨书
2014/02/11 职场文书
园艺师求职信
2014/03/10 职场文书
师德建设实施方案
2014/03/21 职场文书
无犯罪记录证明
2014/09/19 职场文书
2016读书月活动心得体会
2016/01/14 职场文书
护士自荐信范文(2016推荐篇)
2016/01/28 职场文书
新手入门Jvm-- JVM对象创建与内存分配机制
2021/06/18 Java/Android
详解Python+OpenCV绘制灰度直方图
2022/03/22 Python