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


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控制iframe的高度/宽度让其自适应内容
Apr 09 Javascript
通过JS来动态的修改url,实现对url的增删查改
Sep 01 Javascript
JavaScript Split()方法
Dec 18 Javascript
EasyUI布局 高度自适应
Jun 04 Javascript
Bootstrap基本组件学习笔记之按钮组(8)
Dec 07 Javascript
canvas快速绘制圆形、三角形、矩形、多边形方法介绍
Dec 29 Javascript
js实现带三角符的手风琴效果
Mar 01 Javascript
Vue学习之路之登录注册实例代码
Jul 06 Javascript
vue.js中实现登录控制的方法示例
Apr 23 Javascript
Vue登录主页动态背景短视频制作
Sep 21 Javascript
CKEditor扩展插件:自动排版功能autoformat插件实现方法详解
Feb 06 Javascript
理解JavaScript中的对象
Aug 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
如何分别全角和半角以避免乱码
2006/10/09 PHP
PHP中的随机性 你觉得自己幸运吗?
2016/01/22 PHP
Javascript 判断 object 的特定类转载
2007/02/01 Javascript
IE和Firefox的Javascript兼容性总结[推荐收藏]
2011/10/19 Javascript
THREE.JS入门教程(2)着色器-上
2013/01/24 Javascript
form表单中去掉默认的enter键提交并绑定js方法实现代码
2013/04/01 Javascript
js获取当前月的第一天和最后一天的小例子
2013/11/18 Javascript
原生JS实现美图瀑布流布局赏析
2015/09/07 Javascript
灵活的理解JavaScript中的this指向
2016/02/25 Javascript
轻松掌握JavaScript中的Math object数学对象
2016/05/26 Javascript
从0开始学Vue
2016/10/27 Javascript
Vue.js创建Calendar日历效果
2016/11/03 Javascript
Javascript之面向对象--接口
2016/12/02 Javascript
微信小程序如何获取openid及用户信息
2018/01/26 Javascript
React props和state属性的具体使用方法
2018/04/12 Javascript
JavaScript生成指定范围随机数和随机序列的方法
2018/05/05 Javascript
微信小程序scroll-x失效的完美解决方法
2018/07/18 Javascript
jQuery与原生JavaScript选择HTML元素集合用法对比分析
2019/11/26 jQuery
python jieba分词并统计词频后输出结果到Excel和txt文档方法
2018/02/11 Python
Anaconda2下实现Python2.7和Python3.5的共存方法
2018/06/11 Python
详解numpy的argmax的具体使用
2019/05/27 Python
利用Python模拟登录pastebin.com的实现方法
2019/07/12 Python
使用Python实现牛顿法求极值
2020/02/10 Python
python 实现Requests发送带cookies的请求
2021/02/08 Python
AmazeUI 等分网格的实现示例
2020/08/25 HTML / CSS
魔声耳机官方网站:Monster是世界第一品牌的高性能耳机
2016/10/26 全球购物
Lancome兰蔻官方旗舰店:来自法国的世界知名美妆品牌
2018/06/14 全球购物
建筑学推荐信
2013/11/03 职场文书
函授本科自我鉴定
2014/02/04 职场文书
工作态度检讨书
2014/02/11 职场文书
信息服务专业毕业生求职信
2014/03/02 职场文书
个人事迹材料怎么写
2014/12/30 职场文书
文员岗位职责
2015/02/04 职场文书
2016年先进班集体事迹材料
2016/02/26 职场文书
辞职信怎么写?
2019/05/21 职场文书
详解Alibaba Java诊断工具Arthas查看Dubbo动态代理类
2022/04/08 Java/Android