在最近有个项目中 需要实现当文本框聚焦的时候,可以键盘上下键选择内容,按enter键的时候,把内容传到输入框中,如图所示:

实现代码如下:

/**
*输入框聚焦,键盘上下键选择城市
*/
;(function($){
$.fn.inputKey=function(options){
var settings=$.extend({
'focusID':'#city2',//聚焦的输入框ID或class
'slideBox':'.FdestinationBox',//内容容器Div
'current':'current',//li有选中状态的class名
'dataCity':'data-city'//li上的属性 如:<li data-city="北京"></li>
},options); return this.each(function(){
var number = 0;
var $focusDiv = $(settings.focusID);
var $slideBox = $(settings.slideBox);
var $slideBoxLi = $slideBox.find('li');
var sizeLength = $slideBox.find('li').size();
$focusDiv.focus(function(){
// sizeLength = $slideBox.find('li').size();
$slideBoxLi.removeClass(settings.current);//初始化current状态
$slideBox.css({'display':'block'});
}); if(window.addEventListener){
$focusDiv[0].addEventListener("input", function () {
number = 0;
sizeLength = $slideBox.find('li').size();
$slideBoxLi.removeClass(settings.current);
$slideBoxLi.eq(0).addClass(settings.current);
});
}else{
$focusDiv[0].attachEvent("input", function () {
number = 0;
sizeLength = $slideBox.find('li').size();
$slideBoxLi.removeClass(settings.current);
$slideBoxLi.eq(0).addClass(settings.current);
});
} $focusDiv.on('keyup',function(e){
console.log(sizeLength);
e=window.event||e;
if(e.keyCode==38){
if(number>0){
number--;
}else{
number=sizeLength-1;
} $slideBoxLi.removeClass(settings.current);
$slideBoxLi.eq(number).addClass(settings.current);
}
else if(e.keyCode==40){
if(sizeLength-1 > number){
number++;
}else{
number=0;
}
$slideBoxLi.removeClass(settings.current);
$slideBoxLi.eq(number).addClass(settings.current);
} else if(e.keyCode==13){
var dataCity = $slideBoxLi.eq(number).attr(settings.dataCity);
$focusDiv.val(dataCity);
$slideBox.fadeOut();
$focusDiv.blur();
$slideBoxLi.removeClass(settings.current);
}
}); $slideBoxLi.hover(function(){
number=$(this).index();
$slideBoxLi.removeClass(settings.current);
$(this).addClass(settings.current);
}); $('body').on('click',$slideBoxLi,function(e){
e.preventDefault();
var dataCity = $slideBoxLi.eq(number).attr(settings.dataCity);
$focusDiv.val(dataCity);
number=0;
}); });
} })(jQuery);

调用的方式:

$(function(){
$("#city2").inputKey({
'focusID':'#city2',
'slideBox':'.FdestinationBox',
'current':'current',
'dataCity':'data-city'
});
})

jquery实现输入框聚焦,键盘上下键选择城市的更多相关文章

  1. jquery.autocomplete修改 实现键盘上下键 自动填充

    根据需求要实现通过键盘上下移动,获得联想菜单中的值,如同google baidu的查询功能. 在网上找了很久没有找到可以实现该功能的插件,无奈只能自己动手改代码.找到js中的KEY.DOWN 和 KE ...

  2. 类似智能购票的demo--进入页面后默认焦点在第一个输入框,输入内容、回车、right时焦点自动跳到下一个,当跳到select时,下拉选项自动弹出,并且可以按上下键选择,选择完成后再跳到下一个。

    要实现的效果:进入页面后默认焦点在第一个输入框,输入内容.回车.right时焦点自动跳到下一个,当跳到select时,下拉选项自动弹出,并且可以按上下键选择,选择完成后再跳到下一个. PS:自己模拟的 ...

  3. windows使用git bash 无法交互键盘上下键移动选择选项的解决方法

    目录 遇到的问题 解决方案 1. 直接通过数字键来选择 2. 使用 winpty 来启动命令 3. 将 git bash 换成 cmd 4. 使用vscode中是bash 遇到的问题 windows使 ...

  4. 通过键盘上下键 JS事件,控制候选词的选择项

    效果图 JS代码 //上下键 选择事件 searchBackgroud 为样式,只做标记,无实质样式,因为和其他样式不兼容,只能添加CSS $(document).keydown(function ( ...

  5. jquery的输入框自动补全功能+ajax

    jquery的输入框自动补全功能+ajax 2017年05月10日 18:51:39 辣姐什么鬼 阅读数:1461 标签: web前端 更多 个人分类: web前端   内容参考网友文章写成,原博的链 ...

  6. 【转】swift实现ios类似微信输入框跟随键盘弹出的效果

    swift实现ios类似微信输入框跟随键盘弹出的效果 为什么要做这个效果 在聊天app,例如微信中,你会注意到一个效果,就是在你点击输入框时输入框会跟随键盘一起向上弹出,当你点击其他地方时,输入框又会 ...

  7. 【转】IOS 输入框被键盘遮盖的解决方法

    做IOS开发时,难免会遇到输入框被键盘遮掩的问题.上网上搜索了很多相关的解决方案,看了很多,但是由衷的觉得太麻烦了. 有的解决方案是将视图上的所有的东西都添加到一个滚动视图对象( UIScrollVi ...

  8. 【转】ios输入框被键盘挡住的解决办法

    做IOS开发时,难免会遇到输入框被键盘遮掩的问题.上网上搜索了很多相关的解决方案,看了很多,但是由衷的觉得太麻烦了. 有的解决方案是将视图上的所有的东西都添加到一个滚动视图对象( UIScrollVi ...

  9. legend---七、jquery如何选中select的selected的选择上的自定义属性

    legend---七.jquery如何选中select的selected的选择上的自定义属性 一.总结 一句话总结:用冒号属性选择器 var type=$(this).children('option ...

随机推荐

  1. 【CSS3】css3:box-sizing属性

    本文介绍了css3中的box-sizing属性,在这之前读者需要预备知识width的范围. 浏览器的支持情况 Browser Suppored Notes Internet Explorer Yes ...

  2. 性能更好的js动画实现方式——requestAnimationFrame

    用js来实现动画,我们一般是借助setTimeout或setInterval这两个函数,css3动画出来后,我们又可以使用css3来实现动画了,而且性能和流畅度也得到了很大的提升.但是css3动画还是 ...

  3. openlayers方法总结

    openlayers中的一些方法:OpenLayers.Layer::initialize:创建层Div,注册事件:destroy:注销:clone:克隆当前层:setName:设置层name:add ...

  4. Python学习01 Hello World

    Python学习之Hello World 准备工作 去官网http://www.python.org/ 下载python的安装包: http://www.python.org/download/ 当前 ...

  5. org.apache packages can't be resolved in Eclipse解决方案

    删除.m2仓库里面对应的jar包,重新Maven->update project

  6. iOS之 APNs全新的APNs苹果15年WWDC大会上的干货

    记得14年在dl某大学校招上现场面试iOS时候被问到了APNs也就是苹果的推送问题,当时我表示一脸懵逼,因为当时还没有真正接触做过项目也就了解了个大概,总之当时回答的一塌糊涂!后来回去就在网上仔细查了 ...

  7. js DOM Node类型

    DOM(文档对象模型)是针对HTML和XML文档的一个API. DOM可以将任何HTML或XML文档描绘成一个由多层节点构成的.以特定节点为根节点的树形结构.节点分为12种不同的类型,每种类型分别表示 ...

  8. 2.2 CMMI2级——项目计划(Project Planning)

    大家都明白这样的一个道理:做事情要有计划,有一个不成熟的计划总比没有计划要好,软件开发这么复杂的活动,更加需要计划.那么应该怎样做好一个计划呢? 如果对项目的范围.规模.性质.任务.工作量.费用等都不 ...

  9. 文件件监听器,android系统拍照功能调用后删除系统生成的照片

    先说说要实现的功能: android调用系统拍照功能实时 预览 删除 上传 保存 (用户不能再本地文件夹中看到拍的照片) 再说说遇到的问题: 1.调用系统拍照在系统自带的拍照文件夹中生成一张随机命名图 ...

  10. [Linux 性能检测工具]TOP

    TOP NAME 显示linux任务 语法 top -hv | -abcHimMsS -d delay -n iterations -p pid [, pid ...] 描述 top程序提供了系统实时 ...