html文本框只能输入数字

简介:

进行web前端开发,会经常遇到校验文本框内容的情形.比如校验用户输入的手机号是否合法.

其实我们可以从根本上减少用户犯错的机会,比如文本框只能输入数字,若输入非数字字符,则马上被删除.

界面:

 第一个文本框,输入字母时会立即把字母替换为空字符串.

核心js方法:

Js代码   收藏代码
  1. /* 
  2.  * 只能输入正整数,不能有小数点 
  3.  *  
  4.  */  
  5. onlyIntegerKeyUp=function(e){  
  6.     if(e===undefined){  
  7.         e=window.event;  
  8.     }  
  9.     var obj=e.srcElement?e.srcElement:e.target;  
  10.     var pattern = /[^\d]/ig;  
  11.     var val=obj.value;  
  12.     if(pattern.test(val)) {  
  13.         var i=getCursortPosition(e);  
  14.         obj.value=val.replace(pattern,'');  
  15.         setCaretPosition(e,i);  
  16.     }  
  17. };  
  18. /******************************************************************************* 
  19.  * 获取光标位置 
  20.  *  
  21.  * @param ctrl 
  22.  * @returns {Number} 
  23.  */  
  24. getCursortPosition=function(event) {// 获取光标位置函数  
  25.     if (event === undefined || event === null) {  
  26.         event = arguments.callee.caller.arguments[0] || window.event;  
  27.     }  
  28.     var obj = event.srcElement?event.srcElement:event.target;  
  29.     var CaretPos = 0;   // IE Support  
  30.     if (document.selection) {  
  31.         obj.focus ();  
  32.         var Sel = document.selection.createRange ();  
  33.         Sel.moveStart ('character', -obj.value.length);  
  34.         CaretPos = Sel.text.length;  
  35.     } else if (obj.selectionStart || obj.selectionStart == '0'){  
  36.         // Firefox support  
  37.         CaretPos = obj.selectionStart;  
  38.     }  
  39.   
  40.     return (CaretPos);  
  41. };  
  42. /******************************************************************************* 
  43.  * 设置光标位置 
  44.  *  
  45.  * @param ctrl 
  46.  * @returns {Number} 
  47.  */  
  48. setCaretPosition=function(event, pos){// 设置光标位置函数  
  49.     if (event === undefined || event === null) {  
  50.         event = arguments.callee.caller.arguments[0] || window.event;  
  51.     }  
  52.     var obj = event.srcElement?event.srcElement:event.target;  
  53.     if (pos > 0) {  
  54.         pos = pos - 1;//因为把不匹配的字符删除之后,光标会往后移动一个位置  
  55.     }  
  56.     if(obj.setSelectionRange){  
  57.         obj.focus();  
  58.         obj.setSelectionRange(pos,pos);  
  59.     } else if (obj.createTextRange) {  
  60.         var range = obj.createTextRange();  
  61.         range.collapse(true);  
  62.         range.moveEnd('character', pos);  
  63.         range.moveStart('character', pos);  
  64.         range.select();  
  65.     }  
  66. };  
  67. /* 
  68.  * 只能输入数字和字母 
  69.  *  
  70.  */  
  71. onlyNumAndAlphKeyUp=function(event){  
  72.     if(event===undefined){  
  73.         event=window.event;  
  74.     }  
  75.     var obj=event.srcElement?event.srcElement:event.target;  
  76.     var pattern = /[^\w]/ig;  
  77.     if(pattern.test(obj.value)) {  
  78.         var i=getCursortPosition(event);  
  79.         obj.value=obj.value.replace(pattern,'');  
  80.         setCaretPosition(event,i);  
  81.     }  
  82. };  

 

页面代码:

Html代码   收藏代码
  1. <!DOCTYPE html>  
  2. <html>  
  3. <head lang="en">  
  4.     <meta charset="UTF-8">  
  5.     <title></title>  
  6.     <script type="application/javascript" src="jquery-1.11.1.js"></script>  
  7.     <script type="application/javascript" src="comm.js"></script>  
  8. </head>  
  9. <body>  
  10. 只能输入数字: <input type="text" onkeyup="onlyIntegerKeyUp(event)"/><br>  
  11. <br>  
  12. 只能输入数字和字母: <input type="text" onkeyup="onlyNumAndAlphKeyUp(event)"/><br>  
  13. </body>  
  14. </html>  

 

为什么会有getCursortPosition()和setCaretPosition() 

因为通过js替换非法字符之后,光标的位置变化了.所以这两个方法用于在替换之前保存(记录)光标位置,替换之后恢复光标位置.

相关文章
html+css实战134-搜索-布局和文本框
html+css实战134-搜索-布局和文本框
140 0
html+css实战134-搜索-布局和文本框
|
移动开发 Java HTML5
HTML5 学习12.文本框和单选框
HTML5 学习12.文本框和单选框
|
JSON 前端开发 JavaScript
小记录 单选框的注意点 html中字符串拼接 el-upload手动上传 表格跳转 v-for动态添加背景色 控制label标签于文本框之间的间距
小记录 单选框的注意点 html中字符串拼接 el-upload手动上传 表格跳转 v-for动态添加背景色 控制label标签于文本框之间的间距
|
前端开发
HTML,login文本框&#183;
列子: Title .user{ position: relative; width: 250px; } .
766 0
|
JavaScript PHP 开发工具
html点击按钮动态添加input文本框
html //注意:id不能写在button上,js获取不到button的id(可能是我们公司的框架的原因)script function add1(){ var input1 = document.
2589 0
|
5天前
|
XML 前端开发 JavaScript
Html:CSS介绍
Html:CSS介绍
18 1
|
5天前
|
前端开发
Html:CSS的书写位置
Html:CSS的书写位置
14 0
|
1天前
|
前端开发 JavaScript 搜索推荐
打造个人博客网站:从零开始的HTML与CSS之旅
【9月更文挑战第31天】在这个数字时代,拥有一个个人博客网站是展示自我、分享知识和连接世界的重要方式。本文将引导你通过简单的HTML和CSS知识,一步步构建起你的在线空间。无论你是编程新手还是希望通过实践加深理解,这篇文章都将是你的理想指南。我们将探索基本概念,实现页面布局,并点缀以个性化样式,最终将静态页面转变为动态交互式网站。准备好了吗?让我们开始吧!
|
4天前
|
XML 前端开发 JavaScript
jQuery HTML / CSS 方法
jQuery HTML / CSS 方法
8 2