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


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 相关文章推荐
jQuery Select(单选) 模拟插件 V1.3.62 改进版
Jul 17 Javascript
jquery实现智能感知连接外网搜索
May 21 Javascript
Script标签与访问HTML页面详解
Jan 10 Javascript
js数组的基本操作(很全自己整理的)
Oct 16 Javascript
原生JavaScript编写俄罗斯方块
Mar 30 Javascript
jquery实现图片切换代码
Oct 13 Javascript
js正则表达式惰性匹配和贪婪匹配用法分析
Dec 26 Javascript
微信小程序 开发之快递查询功能的实现
Jan 09 Javascript
深入理解vue-router之keep-alive
Aug 31 Javascript
JS中Promise函数then的奥秘探究
Jul 30 Javascript
Vue动态组件与异步组件实例详解
Feb 23 Javascript
vue 更改连接后台的api示例
Nov 11 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
PHP4实际应用经验篇(3)
2006/10/09 PHP
使用PHP提取视频网站页面中的FLASH地址的代码
2010/04/17 PHP
ThinkPHP查询返回简单字段数组的方法
2014/08/25 PHP
php curl上传、下载、https登陆实现代码
2017/07/23 PHP
PHP中str_split()函数的用法讲解
2019/04/11 PHP
RR vs IO BO3 第一场2.13
2021/03/10 DOTA
jQuery之ajax技术的详细介绍
2013/06/19 Javascript
jQuery插件EasyUI获取当前Tab中iframe窗体对象的方法
2016/08/05 Javascript
canvas知识总结
2017/01/25 Javascript
javascript 使用正则test( )第一次是 true,第二次是false
2017/02/22 Javascript
jQuery tip提示插件(实例分享)
2017/04/28 jQuery
jQuery表单设置值的方法
2017/06/30 jQuery
vue中appear的用法
2017/08/17 Javascript
vue2 router 动态传参,多个参数的实例
2017/11/10 Javascript
BootStrap自定义popover,点击区域隐藏功能的实现
2018/01/23 Javascript
关于vue中 $emit的用法详解
2018/04/12 Javascript
JavaScript时间与时间戳的转换操作实例分析
2018/12/07 Javascript
cocos2dx+lua实现橡皮擦功能
2018/12/20 Javascript
Layui数据表格判断编辑输入的值,是否为我需要的类型详解
2019/10/26 Javascript
[05:02]2014DOTA2 TI中国区预选赛精彩TOPPLAY第三弹
2014/06/25 DOTA
[42:06]2019国际邀请赛全明星赛 8.23
2019/09/05 DOTA
[原创]pip和pygal的安装实例教程
2017/12/07 Python
解决每次打开pycharm直接进入项目的问题
2018/10/28 Python
PyCharm 在Windows的有用快捷键详解
2020/04/07 Python
CSS3实现精美横向滚动菜单按钮
2017/04/14 HTML / CSS
实例讲解使用CSS实现多边框和透明边框的方法
2015/09/08 HTML / CSS
Html5元素及基本语法详解
2016/08/02 HTML / CSS
ghd官网:英国ghd直发器品牌
2018/05/04 全球购物
Amara德国:家居饰品、设计师品牌和豪华礼品
2019/05/20 全球购物
基层干部十八大感言
2014/01/19 职场文书
总经理秘书岗位职责
2014/03/17 职场文书
经济国贸专业求职信
2014/06/18 职场文书
市场营销专业应届生自荐信
2014/06/19 职场文书
优秀少先队员事迹材料
2014/12/24 职场文书
格列夫游记读书笔记
2015/07/01 职场文书
三好学生竞选稿
2015/11/21 职场文书