文本框倒叙输入

简介: 所谓的文本框倒叙输入是指输入框的焦点始终在最开始的位置,如图所示,当我输入123456789时,在输入框上显示的是987654321。  为什么要做这个Demo?是因为在项目中遇到了,项目需求是两个输入框,一个正序输入,另一个倒叙输入。

所谓的文本框倒叙输入是指输入框的焦点始终在最开始的位置,如图所示,当我输入123456789时,在输入框上显示的是987654321。

 为什么要做这个Demo?是因为在项目中遇到了,项目需求是两个输入框,一个正序输入,另一个倒叙输入。 下面我把实现的思路和代码写出来。

文本倒叙输入:

只要我们保证输入框的焦点始终在第一位,这样的话就可以实现每次我们输入的都在最前面,即倒叙

代码:

 1 function setPosition(ctrl, pos) {                  //设置光标位置函数
 2         if (ctrl.setSelectionRange) {
 3             ctrl.focus();
 4             ctrl.setSelectionRange(pos, pos);
 5         } else if (ctrl.createTextRange) {
 6             var range = ctrl.createTextRange();     //创建一个选择区域
 7             range.collapse(true);                   //将光标移动到选择区域的开始位置
 8             range.moveEnd('character', pos);        //改变选择区域结束的位置
 9             range.moveStart('character', pos);      //改变选择区域开始的位置
10             range.select();                         //将选择的内容同步到当前的对象
11         }
12     }

 

只要我们将参数pos设为0就可以了。

下面是一个完整的Demo,这个Demo实现了正常删除和倒叙输入。

 1 <!DOCTYPE html>
 2 <html>
 3 <head>
 4     <title></title>
 5     <meta http-equiv="Content-Type" content="text/html;charset=utf-8">
 6     <style>
 7         .content {
 8             width: 300px;margin:0 auto;margin-top:50px;
 9         }
10         ul {
11             list-style: none;
12         }
13         .elem {
14             width: 200px;
15         }
16 
17     </style>
18     <script src="http://cdn.staticfile.org/jquery/2.1.1-rc2/jquery.min.js"></script>
19 </head>
20 <body>
21     <div style="">
22         <ul>
23             <li>
24                 <input type="text" class="elem">
25             </li>
26             <li>
27                 <input type="text" class="elem">
28             </li>
29             <li>
30                 <input type="text" class="elem">
31             </li>
32         </ul>
33     </div>
34 <script>
35     function setPosition(ctrl, pos) {               //设置光标位置函数
36         if (ctrl.setSelectionRange) {
37             ctrl.focus();
38             ctrl.setSelectionRange(pos, pos);
39         } else if (ctrl.createTextRange) {
40             var range = ctrl.createTextRange();     //创建一个选择区域
41             range.collapse(true);                   //将光标移动到选择区域的开始位置
42             range.moveEnd('character', pos);        //改变选择区域结束的位置
43             range.moveStart('character', pos);      //改变选择区域开始的位置
44             range.select();                         //将选择的内容同步到当前的对象
45         }
46     }
47     $('.elem').on('keypress keyup', function() {
48         if(event.keyCode === 8)
49             return;
50         setPosition(this,0);
51     });
52 </script>
53 </body>
54 </html>

 

另外在附上相关的获取焦点位置的函数,可能你会用到

 1 function getPosition(ctrl) {
 2         // IE Support
 3         var CaretPos = 0; 
 4         if (document.selection) {
 5             ctrl.focus();
 6             var Sel = document.selection.createRange();
 7             Sel.moveStart('character', -ctrl.value.length);
 8             CaretPos = Sel.text.length;
 9         }
10         // Firefox support
11         else if (ctrl.selectionStart || ctrl.selectionStart == '0')
12             CaretPos = ctrl.selectionStart;
13         return (CaretPos);
14     }

 

总结:

  实现了设置和获取文本输入焦点,我们就可以做一些其他的特效,比如删除一整个单词或者变量等等。

  如果你有关于此文的好想法,可以@me,希望此文能够帮助你!

 

相关文章
如何使用阿里云 Billing API 实现资源包余量报警
使用Billing API获取资源包余量信息,自主实现资源包余量报警
597 2
|
机器学习/深度学习 人工智能 算法
人工智能在医疗诊断中的应用与挑战
本文探讨了人工智能(AI)在医疗诊断领域的应用及其面临的挑战。随着技术的不断进步,AI已经在医学影像分析、疾病预测和个性化治疗等方面展现出巨大潜力。然而,数据隐私、算法透明度以及临床整合等问题仍然是亟待解决的关键问题。本文旨在通过分析当前AI技术在医疗诊断中的具体应用案例,探讨其带来的优势和潜在风险,并提出相应的解决策略,以期为未来AI在医疗领域的深入应用提供参考。
371 3
|
开发框架 前端开发 JavaScript
【Uniapp 专栏】Uniapp 中的动画效果实现与特性
【5月更文挑战第13天】Uniapp是一款跨平台开发框架,提供丰富的动画效果以提升用户体验和应用吸引力。基于CSS和JavaScript动画,支持转场、元素等多种动画类型,确保跨平台一致性并优化性能。通过CSS属性或JavaScript库实现动画,结合页面布局和手势操作,创造沉浸式交互。通过调试和优化,开发者可打造惊艳效果,适应未来技术发展,提升应用竞争力。
1193 1
【Uniapp 专栏】Uniapp 中的动画效果实现与特性
|
前端开发 JavaScript
使用 JavaScript 获取 URL 参数的详细指南
【2月更文挑战第26天】
14621 2
使用 JavaScript 获取 URL 参数的详细指南
|
负载均衡 网络协议 应用服务中间件
使用阿里云NLB获取客户端原地址
本文为您介绍NLB如何获取客户端真实IP,及通过Proxy Protocol获取客户端真实IP的场景和配置教程。
936 1
|
SQL 关系型数据库 数据库
Python爬虫——爬取中国高校排名前100名并写入MySQL
  本篇分享讲爬取中国高校排名前100名并将其写入MySQL,这样做的好处是:1.将数据存入数据库,能永久利用;2.能利用数据库技术做一些其他操作。
1816 0
|
机器学习/深度学习 数据采集 自然语言处理
循环神经网络RNN完全解析:从基础理论到PyTorch实战2
循环神经网络RNN完全解析:从基础理论到PyTorch实战2
800 0
|
算法 计算机视觉
学习:基于泰勒级数近似估计的图像增强综述
学习:基于泰勒级数近似估计的图像增强综述
635 0
学习:基于泰勒级数近似估计的图像增强综述
|
JavaScript 网络安全 Windows
Nvm的安装及使用(Nodejs版本管理器)
一个电脑,多个版本的nodejs共存。 - 超级详细全面的nodejs版本管理工具NVM的下载安装及使用。 - nvm list 有哪些 - nvm install < version > 下载 - nvm uninstall < version > 卸载 - nvm use < version > 用哪个
796 0
Nvm的安装及使用(Nodejs版本管理器)
|
机器学习/深度学习 算法 数据挖掘
2023美国大学生数学建模竞赛ABCDEF题思路汇总 美赛建模思路
2023美国大学生数学建模竞赛ABCDEF题思路汇总 美赛建模思路
下一篇
oss云网关配置