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 相关文章推荐
WordPress 照片lightbox效果的运用几点
Jun 22 Javascript
jquery.gridrotator实现响应式图片展示画廊效果
Jun 23 Javascript
js贪吃蛇网页版游戏特效代码分享(挑战十关)
Aug 24 Javascript
延时加载JavaScript代码提高速度
Dec 27 Javascript
js中scrollTop()方法和scroll()方法用法示例
Oct 03 Javascript
Angular.JS实现无限级的联动菜单(使用demo)
Feb 08 Javascript
jQuery实现div跟随鼠标移动
Aug 20 jQuery
angularjs中ng-bind-html的用法总结
May 23 Javascript
详解vue组件开发脚手架
Jun 15 Javascript
Angular2实现的秒表及改良版示例
May 10 Javascript
vue实现在v-html的html字符串中绑定事件
Oct 28 Javascript
Vue中多元素过渡特效的解决方案
Feb 05 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
谈谈新手如何学习PHP
2006/12/23 PHP
PHP开发环境配置(MySQL数据库安装图文教程)
2010/04/28 PHP
通过chrome浏览器控制台(Console)进行PHP Debug的方法
2016/10/19 PHP
PHP关键特性之命名空间实例详解
2017/05/06 PHP
一个可以显示阴历的JS代码
2007/03/05 Javascript
用js小类库获取浏览器的高度和宽度信息
2012/01/15 Javascript
js setTimeout 参数传递使用介绍
2013/08/13 Javascript
jquery.cookie用法详细解析
2013/12/18 Javascript
Nodejs中读取中文文件编码问题、发送邮件和定时任务实例
2015/01/01 NodeJs
jQuery模拟完美实现经典FLASH导航动画效果【附demo源码下载】
2016/11/09 Javascript
js获取文件里面的所有文件名(实例)
2017/10/17 Javascript
20行JS代码实现粘贴板复制功能
2018/02/06 Javascript
video.js 实现视频只能后退不能快进的思路详解
2018/08/09 Javascript
Vue实现表格中对数据进行转换、处理的方法
2018/09/06 Javascript
Vue.js + Nuxt.js 项目中使用 Vee-validate 表单校验
2019/04/22 Javascript
小程序实现日历左右滑动效果
2019/10/21 Javascript
原生javascript单例模式的应用实例分析
2020/02/23 Javascript
使用next.js开发网址缩短服务的方法
2020/06/17 Javascript
[01:33]一分钟玩转DOTA2第三弹:DOTA2&DotA快捷操作大对比
2014/06/04 DOTA
[02:12]探秘2016国际邀请赛中国区预选赛选手房间
2016/06/25 DOTA
python解析xml模块封装代码
2014/02/07 Python
python网络编程学习笔记(八):XML生成与解析(DOM、ElementTree)
2014/06/09 Python
使用python实现rsa算法代码
2016/02/17 Python
python中利用await关键字如何等待Future对象完成详解
2017/09/07 Python
TensorFlow实现卷积神经网络CNN
2018/03/09 Python
Python实现端口检测的方法
2018/07/24 Python
Django框架静态文件使用/中间件/禁用ip功能实例详解
2019/07/22 Python
Python带参数的装饰器运行原理解析
2020/06/09 Python
英国定做窗帘和纺织品面料一站式商店:Dekoria
2018/08/29 全球购物
纽约和芝加哥当天送花:Ode à la Rose
2019/07/05 全球购物
海量信息软件测试笔试题
2015/08/08 面试题
法定代表人授权委托书
2014/09/19 职场文书
夫妻双方自愿离婚协议书怎么写
2014/12/01 职场文书
董事长助理工作总结2015
2015/07/23 职场文书
导游词之江苏同里古镇
2019/11/18 职场文书
导游词之塘栖古镇
2019/12/04 职场文书