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


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图片预加载技术(详细演示)
Mar 12 Javascript
div当滚动到页面顶部的时候固定在顶部实例代码
May 27 Javascript
window.showModalDialog参数传递中含有特殊字符的处理方法
Jun 06 Javascript
jQuery中prepend()方法用法实例
Dec 25 Javascript
js漂浮广告实现代码
Aug 15 Javascript
基于JavaScript代码实现兼容各浏览器的设为首页和加入收藏
Jan 07 Javascript
javascript 使用正则test( )第一次是 true,第二次是false
Feb 22 Javascript
MUI  Scroll插件的使用详解
Apr 13 Javascript
element ui 表格动态列显示空白bug 修复方法
Sep 04 Javascript
利用JavaScript缓存远程窃取Wi-Fi密码的思路详解
Nov 05 Javascript
解决layui中onchange失效以及form动态渲染失效的问题
Sep 27 Javascript
jQuery 筛选器简单操作示例
Oct 02 jQuery
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
动态网站web开发 PHP、ASP还是ASP.NET
2006/10/09 PHP
提升PHP速度全攻略
2006/10/09 PHP
PHP 抓取网页图片并且另存为的实现代码
2010/03/24 PHP
WordPress中获取所使用的模板的页面ID的简单方法
2015/12/31 PHP
php mysql_list_dbs()函数用法示例
2017/03/29 PHP
Yii2第三方类库插件Imagine的安装和使用
2017/07/06 PHP
小议Function.apply()之二------利用Apply的参数数组化来提高 JavaScript程序性能
2006/11/30 Javascript
JavaScript 版本自动生成文章摘要
2008/07/23 Javascript
在JavaScript并非所有的一切都是对象
2013/04/11 Javascript
JavaScript匿名函数用法分析
2015/02/13 Javascript
EasyUI Pagination 分页的两种做法小结
2016/07/09 Javascript
AngularJS 单元测试(二)详解
2016/09/21 Javascript
js实现5秒倒计时重新发送短信功能
2017/02/05 Javascript
vue给组件传递不同的值方法
2018/09/29 Javascript
vue下拉菜单组件(含搜索)的实现代码
2018/11/25 Javascript
vue+web端仿微信网页版聊天室功能
2019/04/30 Javascript
详解vue 动态加载并注册组件且通过 render动态创建该组件
2019/05/30 Javascript
如何使用50行javaScript代码实现简单版的call,apply,bind
2019/08/14 Javascript
d3.js实现图形拖拽
2019/12/19 Javascript
vue+vant实现购物车全选和反选功能
2020/11/17 Vue.js
JavaScript实现商品评价五星好评
2020/11/30 Javascript
关于你不想知道的所有Python3 unicode特性
2014/11/28 Python
Flask框架web开发之零基础入门
2018/12/10 Python
Python实现二维曲线拟合的方法
2018/12/29 Python
Python设计模式之原型模式实例详解
2019/01/18 Python
关于Python3 lambda函数的深入浅出
2019/11/27 Python
python使用for...else跳出双层嵌套循环的方法实例
2020/05/17 Python
微软香港官网及网上商店:Microsoft HK
2016/09/01 全球购物
印度最大的网上花店:Ferns N Petals(鲜花、礼品和蛋糕)
2017/10/16 全球购物
Why we need EJB
2016/10/20 面试题
医生实习工作总结的自我评价
2013/09/27 职场文书
房产销售经理职责
2013/12/20 职场文书
电气工程师岗位职责
2014/01/01 职场文书
2015年员工试用期工作总结
2014/12/12 职场文书
护士个人总结范文
2015/02/13 职场文书
OpenCV图像变换之傅里叶变换的一些应用
2021/07/26 Python