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


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 相关文章推荐
Javascript里使用Dom操作Xml
Jan 22 Javascript
一个选择最快的服务器转向代码
Apr 27 Javascript
jquery 双色表格实现代码
Dec 08 Javascript
JavaScript调试技巧之console.log()详解
Mar 19 Javascript
JavaScript实现向OL列表内动态添加LI元素的方法
Mar 21 Javascript
JavaScript通过prototype给对象定义属性用法实例
Mar 23 Javascript
移动端界面的适配
Jan 11 Javascript
基于bootstrap实现bootstrap中文网巨幕效果
May 02 Javascript
详解如何在angular2中获取节点
Nov 23 Javascript
vue自定义指令实现方法详解
Feb 11 Javascript
vue-mugen-scroll组件实现pc端滚动刷新
Aug 16 Javascript
Vue环境搭建+VSCode+Win10的详细教程
Aug 19 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
星际RPG字典
2020/03/04 星际争霸
用PHP中的 == 运算符进行字符串比较
2006/11/26 PHP
PHP容易忘记的知识点分享
2013/04/30 PHP
PHP魔术方法使用方法汇总
2016/02/14 PHP
php生成无限栏目树
2017/03/16 PHP
yii2.0整合阿里云oss删除单个文件的方法
2017/09/19 PHP
PHP parse_ini_file函数的应用与扩展操作示例
2019/01/07 PHP
JS打印gridview实现原理及代码
2013/02/05 Javascript
JS定义回车事件(实现代码)
2013/07/08 Javascript
使用jsonp完美解决跨域问题
2014/11/27 Javascript
Angularjs实现搜索关键字高亮显示效果
2017/01/17 Javascript
详解VueJs前后端分离跨域问题
2017/05/24 Javascript
Vue2.0基于vue-cli+webpack父子组件通信(实例讲解)
2017/09/14 Javascript
Angular实现表单验证功能
2017/11/13 Javascript
vue2中,根据list的id进入对应的详情页并修改title方法
2018/08/24 Javascript
Vue结合后台导入导出Excel问题详解
2019/02/19 Javascript
JS自定义滚动条效果
2020/03/13 Javascript
如何基于jQuery实现五角星评分
2020/09/02 jQuery
Python基于PycURL实现POST的方法
2015/07/25 Python
python实现求解列表中元素的排列和组合问题
2018/03/15 Python
替换python字典中的key值方法
2018/07/06 Python
删除DataFrame中值全为NaN或者包含有NaN的列或行方法
2018/11/06 Python
pandas 选取行和列数据的方法详解
2019/08/08 Python
Django在Model保存前记录日志实例
2020/05/14 Python
使用python求斐波那契数列中第n个数的值示例代码
2020/07/26 Python
python中@contextmanager实例用法
2021/02/07 Python
使用canvas压缩图片大小的方法示例
2019/08/02 HTML / CSS
集世界奢侈品和设计师品牌的意大利精品买手店:Tessabit
2019/08/17 全球购物
Brasty罗马尼亚:购买手表、香水、化妆品、珠宝
2020/04/21 全球购物
会计学自我鉴定
2014/02/06 职场文书
学习党的群众路线教育实践活动心得体会
2014/03/01 职场文书
群众路线剖析材料怎么写
2014/10/09 职场文书
2015年护士节活动总结
2015/02/10 职场文书
地球一小时活动总结
2015/02/27 职场文书
社区党支部公开承诺书
2015/04/29 职场文书
个人求职意向书
2015/05/11 职场文书