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


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 相关文章推荐
js 纯数字不重复排列的另类方法
Jul 17 Javascript
JQuery遍历json数组的3种方法
Nov 08 Javascript
jQuery中:only-child选择器用法实例
Jan 03 Javascript
原生JavaScript实现滚动条效果
Mar 24 Javascript
快速掌握Node.js环境的安装与运行方法
Feb 16 Javascript
Bootstrap免费字体和图标网站(值得收藏)
Mar 16 Javascript
AngularJS 霸道的过滤器小结
Apr 26 Javascript
手把手教你vue-cli单页到多页应用的方法
May 31 Javascript
socket在egg中的使用实例代码详解
May 30 Javascript
详解在vue-cli3.0中自定css、js和图片的打包路径
Aug 26 Javascript
jQuery设置下拉框显示与隐藏效果的方法分析
Sep 15 jQuery
前端vue+elementUI如何实现记住密码功能
Sep 20 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
PHP中构造函数和析构函数解析
2014/10/10 PHP
php管理nginx虚拟主机shell脚本实例
2014/11/19 PHP
PHP关联数组实现根据元素值删除元素的方法
2015/06/26 PHP
给WordPress中的留言加上楼层号的PHP代码实例
2015/12/14 PHP
thinkphp框架下实现登录、注册、找回密码功能
2016/04/06 PHP
js 判断上传文件大小及格式代码
2013/11/13 Javascript
javascript简单实现命名空间效果
2014/03/06 Javascript
使用GruntJS构建Web程序之合并压缩篇
2014/06/06 Javascript
IE8下Jquery获取select选中的值post到后台报错问题
2014/07/02 Javascript
jQuery xml字符串的解析、读取及查找方法
2016/03/01 Javascript
el表达式 写入bootstrap表格数据页面的实例代码
2017/01/11 Javascript
浅析vue component 组件使用
2017/03/06 Javascript
详解webpack + react + react-router 如何实现懒加载
2017/11/20 Javascript
微信小程序如何获取openid及用户信息
2018/01/26 Javascript
修改Nodejs内置的npm默认配置路径方法
2018/05/13 NodeJs
js canvas实现橡皮擦效果
2018/12/20 Javascript
jquery+php后台实现省市区联动功能示例
2019/05/23 jQuery
vue element-ui el-date-picker限制选择时间为当天之前的代码
2019/11/07 Javascript
antd-mobile ListView长列表的数据更新遇到的坑
2020/04/08 Javascript
Javascript类型判断相关例题及解析
2020/08/26 Javascript
[55:32]2018DOTA2亚洲邀请赛 4.4 淘汰赛 EG vs LGD 第二场
2018/04/05 DOTA
Python中的测试模块unittest和doctest的使用教程
2015/04/14 Python
安装Python的web.py框架并从hello world开始编程
2015/04/25 Python
python3.6+django2.0开发一套学员管理系统
2018/03/03 Python
解决Tensorflow安装成功,但在导入时报错的问题
2018/06/13 Python
Python FtpLib模块应用操作详解
2019/12/12 Python
解决keras backend 越跑越慢问题
2020/06/18 Python
详解纯CSS3制作的20种loading动效
2017/07/05 HTML / CSS
利用Bootstrap实现漂亮简洁的CSS3价格表实例源码
2017/03/02 HTML / CSS
详解HTML5中的标签
2015/06/19 HTML / CSS
飞利浦法国官网:Philips法国
2019/07/10 全球购物
日语专业个人的求职信
2013/12/03 职场文书
单位实习证明怎么写
2014/01/17 职场文书
党员剖析材料范文
2014/12/18 职场文书
教师专业技术工作总结2015
2015/05/13 职场文书
python开发人人对战的五子棋小游戏
2022/05/02 Python