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


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 相关文章推荐
细说浏览器特性检测(2)-通用事件检测
Nov 05 Javascript
jQuery基础框架浅入剖析
Dec 27 Javascript
JavaScript中几个重要的属性(this、constructor、prototype)介绍
May 19 Javascript
利用JS判断用户是否上网(连接网络)
Dec 23 Javascript
jQuery调用WebMethod(PageMethod) NET2.0的方法
Apr 15 Javascript
JS控制div跳转到指定的位置的几种解决方案总结
Nov 05 Javascript
JS百度地图搜索悬浮窗功能
Jan 12 Javascript
ExtJs异步无法向外传值和赋值的完美解决办法
Jun 14 Javascript
vue cli webpack中使用sass的方法
Feb 24 Javascript
Node.js中你不可不精的Stream(流)
Jun 08 Javascript
手把手教你 CKEDITOR 4 实现Dialog 内嵌 IFrame操作详解
Jun 18 Javascript
js判断密码强度的方法
Mar 18 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
神族 Protoss 剧情介绍
2020/03/14 星际争霸
PHP截取汉字乱码问题解决方法mb_substr函数的应用
2008/03/30 PHP
php继承中方法重载(覆盖)的应用场合
2015/02/09 PHP
php实现word转html的方法
2016/01/22 PHP
PHP pear安装配置教程
2016/05/14 PHP
JQUERY对单选框(radio)操作的小例子
2013/04/25 Javascript
jQuery.Highcharts.js绘制柱状图饼状图曲线图
2015/03/14 Javascript
对Js OOP编程 创建对象的一些全面理解
2016/07/26 Javascript
JavaScript获取短信验证码(周期性)
2016/12/29 Javascript
vue时间格式化实例代码
2017/06/13 Javascript
jQuery实现切换隐藏与显示同时切换图标功能
2017/10/29 jQuery
vue的toast弹窗组件实例详解
2018/05/14 Javascript
微信小程序使用swiper组件实现类3D轮播图
2018/08/29 Javascript
Koa代理Http请求的示例代码
2018/10/10 Javascript
构建Vue大型应用的10个最佳实践(小结)
2019/11/07 Javascript
Vue中key的作用示例代码详解
2020/06/10 Javascript
JavaScript 如何计算文本的行数的实现
2020/09/14 Javascript
Vuex实现简单购物车
2021/01/10 Vue.js
[00:48]完美“圣”典2016风云人物:xiao8宣传片
2016/11/30 DOTA
[01:04:32]DOTA2-DPC中国联赛 正赛 Aster vs LBZS BO3 第二场 2月23日
2021/03/11 DOTA
Python解析json文件相关知识学习
2016/03/01 Python
使用pandas实现csv/excel sheet互相转换的方法
2018/12/10 Python
基于PyQt4和PySide实现输入对话框效果
2019/02/27 Python
更新修改后的Python模块方法
2019/03/03 Python
Python 微信爬虫完整实例【单线程与多线程】
2019/07/06 Python
Python随机函数库random的使用方法详解
2019/08/21 Python
pyqt5、qtdesigner安装和环境设置教程
2019/09/25 Python
python实现拉普拉斯特征图降维示例
2019/11/25 Python
美国著名的户外用品品牌:L.L.Bean
2018/01/05 全球购物
美国波西米亚风格服装品牌:Show Me Your Mumu
2018/01/05 全球购物
拉斯维加斯城市观光通行证:Las Vegas Pass
2019/05/21 全球购物
Bonami斯洛伐克:购买家具和家居饰品
2019/07/02 全球购物
会计人员岗位职责
2014/03/19 职场文书
会计师事务所实习证明
2014/11/16 职场文书
初中数学教学反思范文
2016/02/17 职场文书
Python中threading库实现线程锁与释放锁
2021/05/17 Python