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


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读取XML文件数据并显示的实现代码
Dec 16 Javascript
使用JS画图之点、线、面
Jan 12 Javascript
简单的jQuery入门指引
Jul 28 Javascript
理解javascript中的原型和原型链
Jul 30 Javascript
第二章之Bootstrap 页面排版样式
Apr 25 Javascript
JS之相等操作符详解
Sep 13 Javascript
详解闭包解决jQuery中AJAX的外部变量问题
Feb 22 Javascript
Javascript实现页面滚动时导航智能定位
May 06 Javascript
EasyUI创建人员树的实例代码
Sep 15 Javascript
详解Vue 数据更新了但页面没有更新的 7 种情况汇总及延伸总结
May 28 Javascript
vue用ant design中table表格,点击某行时触发的事件操作
Oct 28 Javascript
js正则匹配markdown里的图片标签的实现
Mar 24 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
fleaphp crud操作之findByField函数的使用方法
2011/04/23 PHP
兼容firefox,chrome的网页灰度效果
2011/08/08 PHP
php获取系统变量方法小结
2015/05/29 PHP
PHP convert_uudecode()函数讲解
2019/02/14 PHP
javascript Onunload与Onbeforeunload使用小结
2009/12/31 Javascript
ajax 同步请求和异步请求的差异分析
2011/07/04 Javascript
css值转换成数值请抛弃parseInt
2011/10/24 Javascript
一个基于jquery的文本框记数器
2012/09/19 Javascript
js动态修改input输入框的type属性(实现方法解析)
2013/11/13 Javascript
JQuery性能优化的几点建议
2014/05/14 Javascript
ECMAScript6的新特性箭头函数(Arrow Function)详细介绍
2014/06/07 Javascript
AngularJS基础 ng-keydown 指令简单示例
2016/08/02 Javascript
angular实现form验证实例代码
2017/01/17 Javascript
原生js实现日期计算器功能
2017/02/17 Javascript
JS实现的随机排序功能算法示例
2017/06/09 Javascript
iscroll.js滚动加载实例详解
2017/07/18 Javascript
vue使用 better-scroll的参数和方法详解
2018/01/25 Javascript
vue仿ios列表左划删除
2019/09/26 Javascript
微信小程序indexOf的替换方法(推荐)
2020/01/14 Javascript
Python中的多重装饰器
2015/04/11 Python
Python版微信红包分配算法
2015/05/04 Python
python读取oracle函数返回值
2016/07/18 Python
python处理两种分隔符的数据集方法
2018/12/12 Python
python面向对象法实现图书管理系统
2019/04/19 Python
基于多进程中APScheduler重复运行的解决方法
2019/07/22 Python
Python可变参数会自动填充前面的默认同名参数实例
2019/11/18 Python
Scrapy中如何向Spider传入参数的方法实现
2020/09/28 Python
使用css3绘制出各种几何图形
2016/08/17 HTML / CSS
canvas实现圆绘制的示例代码
2019/09/11 HTML / CSS
JAVA和C++区别都有哪些
2015/03/30 面试题
新闻学专业求职信
2014/07/28 职场文书
群众路线党员自我评议范文2014
2014/09/24 职场文书
领导班子“四风问题”“整改方案
2014/10/02 职场文书
大学优秀学生主要事迹材料
2015/11/04 职场文书
民事调解协议书
2016/03/21 职场文书
十大最强水系宝可梦,最美宝可梦排第三,榜首大家最熟悉
2022/03/18 日漫