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


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 相关文章推荐
cnblogs 代码高亮显示后的代码复制问题解决实现代码
Dec 14 Javascript
jQuery中serializeArray()与serialize()的区别实例分析
Dec 09 Javascript
Webwork 实现文件上传下载代码详解
Feb 02 Javascript
利用jQuery设计一个简单的web音乐播放器的实例分享
Mar 08 Javascript
Jquery和JS获取ul中li标签的实现方法
Jun 02 Javascript
easyui combotree加载静态数据问题(选不上)解决方法
Dec 26 Javascript
js实现楼层导航功能
Feb 23 Javascript
jQuery实现可编辑表格并生成json结果(实例代码)
Jul 19 jQuery
vue的全局提示框组件实例代码
Feb 26 Javascript
Javascript三种字符串连接方式及性能比较
May 28 Javascript
vue相关配置文件详解及多环境配置详细步骤
May 19 Javascript
JavaScript实现随机点名小程序
Oct 29 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
jQuery+Ajax+PHP“喜欢”评级功能实现代码
2015/10/08 PHP
php实现将base64格式图片保存在指定目录的方法
2016/10/13 PHP
yii2中关于加密解密的那些事儿
2018/06/12 PHP
统计jQuery中各字符串出现次数的工具
2012/05/03 Javascript
放弃用你的InnerHTML来输出HTML吧 jQuery Tmpl不详细讲解
2013/04/20 Javascript
Javascript this 关键字 详解
2014/10/22 Javascript
教你如何使用firebug调试功能了解javascript闭包和this
2015/03/04 Javascript
jQuery+CSS3实现3D立方体旋转效果
2015/11/10 Javascript
jQuery获取checkbox选中的值
2016/01/28 Javascript
探索angularjs+requirejs全面实现按需加载的套路
2016/02/26 Javascript
如何用js实现鼠标向上滚动时浮动导航
2016/07/18 Javascript
Vue.js学习笔记之 helloworld
2016/08/14 Javascript
超实用的javascript时间处理总结
2016/08/16 Javascript
JS原型链 详解及示例代码
2016/09/06 Javascript
详解Vuejs2.0 如何利用proxyTable实现跨域请求
2017/08/03 Javascript
webpack 模块热替换原理
2018/04/09 Javascript
详解react内联样式使用webpack将px转rem
2018/09/13 Javascript
js实现图片放大并跟随鼠标移动特效
2019/01/18 Javascript
js实现九宫格抽奖
2020/03/19 Javascript
vue cli3适配所有端方案的实现
2020/04/13 Javascript
Django admin实现图书管理系统菜鸟级教程完整实例
2017/12/12 Python
Python单向链表和双向链表原理与用法实例详解
2018/08/31 Python
Python实现的ftp服务器功能详解【附源码下载】
2019/06/26 Python
python如何保证输入键入数字的方法
2019/08/23 Python
python第三方库学习笔记
2020/02/07 Python
解决Python3.7.0 SSL低版本导致Pip无法使用问题
2020/09/03 Python
html5 Canvas画图教程(10)—把面拆成线条模拟出圆角矩形
2013/01/09 HTML / CSS
斯凯奇新西兰官网:SKECHERS新西兰
2018/02/22 全球购物
安全责任书模板
2014/07/22 职场文书
关于感恩的演讲稿500字
2014/08/26 职场文书
试用期转正后的自我评价
2014/09/21 职场文书
市委常委班子党的群众路线教育实践活动整改措施
2014/10/02 职场文书
2014年办公室人员工作总结
2014/12/09 职场文书
2014年节能降耗工作总结
2014/12/11 职场文书
2015重阳节敬老活动总结
2015/07/29 职场文书
党员电教片《信仰》心得体会
2016/01/15 职场文书