文本框倒叙输入让输入框的焦点始终在最开始的位置


Posted in Javascript onSeptember 01, 2014

所谓的文本框倒叙输入是指输入框的焦点始终在最开始的位置,如图所示,当我输入123456789时,在输入框上显示的是987654321。
文本框倒叙输入让输入框的焦点始终在最开始的位置

为什么要做这个Demo?是因为在项目中遇到了,项目需求是两个输入框,一个正序输入,另一个倒叙输入。 下面我把实现的思路和代码写出来。
文本倒叙输入:

只要我们保证输入框的焦点始终在第一位,这样的话就可以实现每次我们输入的都在最前面,即倒叙

代码:

function setPosition(ctrl, pos) { //设置光标位置函数
if (ctrl.setSelectionRange) {
ctrl.focus();
ctrl.setSelectionRange(pos, pos);
} else if (ctrl.createTextRange) {
var range = ctrl.createTextRange(); //创建一个选择区域
range.collapse(true); //将光标移动到选择区域的开始位置
range.moveEnd('character', pos); //改变选择区域结束的位置
range.moveStart('character', pos); //改变选择区域开始的位置
range.select(); //将选择的内容同步到当前的对象
}
}

只要我们将参数pos设为0就可以了。

下面是一个完整的Demo,这个Demo实现了正常删除和倒叙输入。

<!DOCTYPE html>
<html>
<head>
<title></title>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8">
<style>
.content {
width: 300px;margin:0 auto;margin-top:50px;
}
ul {
list-style: none;
}
.elem {
width: 200px;
}

</style>
<script src="http://cdn.staticfile.org/jquery/2.1.1-rc2/jquery.min.js"></script>
</head>
<body>
<div style="">
<ul>
<li>
<input type="text" class="elem">
</li>
<li>
<input type="text" class="elem">
</li>
<li>
<input type="text" class="elem">
</li>
</ul>
</div>
<script>
function setPosition(ctrl, pos) { //设置光标位置函数
if (ctrl.setSelectionRange) {
ctrl.focus();
ctrl.setSelectionRange(pos, pos);
} else if (ctrl.createTextRange) {
var range = ctrl.createTextRange(); //创建一个选择区域
range.collapse(true); //将光标移动到选择区域的开始位置
range.moveEnd('character', pos); //改变选择区域结束的位置
range.moveStart('character', pos); //改变选择区域开始的位置
range.select(); //将选择的内容同步到当前的对象
}
}
$('.elem').on('keypress keyup', function() {
if(event.keyCode === 8)
return;
setPosition(this,0);
});
</script>
</body>
</html>

另外在附上相关的获取焦点位置的函数,可能你会用到

function getPosition(ctrl) {
// IE Support
var CaretPos = 0; 
if (document.selection) {
ctrl.focus();
var Sel = document.selection.createRange();
Sel.moveStart('character', -ctrl.value.length);
CaretPos = Sel.text.length;
}
// Firefox support
else if (ctrl.selectionStart || ctrl.selectionStart == '0')
CaretPos = ctrl.selectionStart;
return (CaretPos);
}

总结:

实现了设置和获取文本输入焦点,我们就可以做一些其他的特效,比如删除一整个单词或者变量等等。

如果你有关于此文的好想法,可以@me,希望此文能够帮助你!

Javascript 相关文章推荐
用CSS+JS实现的进度条效果效果
Jun 05 Javascript
js 窗口抖动示例
Sep 04 Javascript
基于zepto.js实现仿手机QQ空间的大图查看组件ImageView.js详解
Mar 05 Javascript
jQuery切换所有复选框选中状态的方法
Jul 02 Javascript
JS+CSS实现类似QQ好友及黑名单效果的树型菜单
Sep 22 Javascript
基于HTML模板和JSON数据的JavaScript交互(移动端)
Apr 06 Javascript
关于cookie的初识和运用(js和jq)
Apr 07 Javascript
Java遍历集合方法分析(实现原理、算法性能、适用场合)
Apr 25 Javascript
JS中如何比较两个Json对象是否相等实例代码
Jul 13 Javascript
JS提示:Uncaught SyntaxError: Unexpected token ILLEGAL错误的解决方法
Aug 19 Javascript
Angularjs cookie 操作实例详解
Sep 27 Javascript
js仿微信抢红包功能
Sep 25 Javascript
JavaScript中的单引号和双引号报错的解决方法
Sep 01 #Javascript
一个简单的动态加载js和css的jquery代码
Sep 01 #Javascript
jquery ajax请求方式与提示用户正在处理请稍等
Sep 01 #Javascript
用js提交表单解决一个页面有多个提交按钮的问题
Sep 01 #Javascript
浅析JQuery中的html(),text(),val()区别
Sep 01 #Javascript
如何判断微信内置浏览器(通过User Agent实现)
Sep 01 #Javascript
使用jquery.validate自定义方法实现&quot;手机号码或者固话至少填写一个&quot;的逻辑验证
Sep 01 #Javascript
You might like
[EPIC] Larva vs Flash ZvT @ Crossing Field [2017-10-09]
2020/03/17 星际争霸
php预定义常量
2006/12/25 PHP
PHP5.3安装Zend Guard Loader图文教程
2014/09/29 PHP
javascript 带有滚动条的表格,标题固定,带排序功能.
2009/11/13 Javascript
jquery中的sortable排序之后的保存状态的解决方法
2010/01/28 Javascript
锋利的jQuery 要点归纳(一) jQuery选择器
2010/03/21 Javascript
javascript继承之为什么要继承
2012/11/10 Javascript
jQuery实现首页顶部可伸缩广告特效代码
2015/04/15 Javascript
jquery马赛克拼接翻转效果代码分享
2015/08/24 Javascript
jQuery简单实现页面元素置顶时悬浮效果示例
2016/08/01 Javascript
jQuery图片加载显示loading效果
2016/11/04 Javascript
nodejs个人博客开发第二步 入口文件
2017/04/12 NodeJs
Vue 进阶教程之v-model详解
2017/05/06 Javascript
JavaScript实现简单的星星评分效果
2017/05/18 Javascript
vue-cli下的vuex的简单Demo图解(实现加1减1操作)
2018/02/26 Javascript
vue-infinite-loading2.0 中文文档详解
2018/04/08 Javascript
nodejs语言实现验证码生成功能的示例代码
2019/10/13 NodeJs
[25:45]2018DOTA2亚洲邀请赛4.5SOLO赛 Sylar vs Paparazi
2018/04/06 DOTA
[51:50]完美世界DOTA2联赛 Magma vs GXR 第一场 11.07
2020/11/10 DOTA
[08:08]DOTA2-DPC中国联赛2月28日Recap集锦
2021/03/11 DOTA
Python中最大最小赋值小技巧(分享)
2017/12/23 Python
小白如何入门Python? 制作一个网站为例
2018/03/06 Python
python的help函数如何使用
2020/06/11 Python
搭建pypi私有仓库实现过程详解
2020/11/25 Python
利用Python批量识别电子账单数据的方法
2021/02/08 Python
利用CSS3实现炫酷的飞机起飞动画
2016/09/17 HTML / CSS
Shopbop中文官网:美国亚马逊旗下时尚购物网站
2020/12/15 全球购物
班主任班级寄语大全
2014/04/04 职场文书
群众路线领导对照材料
2014/08/23 职场文书
小学庆六一活动总结
2014/08/28 职场文书
珠宝的促销活动方案
2014/08/31 职场文书
2014年党员加强作风建设思想汇报
2014/09/15 职场文书
浪漫的婚礼主持词
2015/06/30 职场文书
学术会议开幕词
2016/03/03 职场文书
Python 多线程之threading 模块的使用
2021/04/14 Python
德劲DE1107指针试高灵敏度全波段收音机机评
2022/04/05 无线电