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

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

界面:

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

核心js方法:

/*

* 只能输入正整数,不能有小数点

*

*/

onlyIntegerKeyUp=function(e){

if(e===undefined){

e=window.event;

}

var obj=e.srcElement?e.srcElement:e.target;

var pattern = /[^\d]/ig;

var val=obj.value;

if(pattern.test(val)) {

var i=getCursortPosition(e);

obj.value=val.replace(pattern,'');

setCaretPosition(e,i);

}

};

/*******************************************************************************

* 获取光标位置

*

* @param ctrl

* @returns {Number}

*/

getCursortPosition=function(event) {// 获取光标位置函数

if (event === undefined || event === null) {

event = arguments.callee.caller.arguments[0] || window.event;

}

var obj = event.srcElement?event.srcElement:event.target;

var CaretPos = 0;// IE Support

if (document.selection) {

obj.focus ();

var Sel = document.selection.createRange ();

Sel.moveStart ('character', -obj.value.length);

CaretPos = Sel.text.length;

} else if (obj.selectionStart || obj.selectionStart == '0'){

// Firefox support

CaretPos = obj.selectionStart;

}

return (CaretPos);

};

/*******************************************************************************

* 设置光标位置

*

* @param ctrl

* @returns {Number}

*/

setCaretPosition=function(event, pos){// 设置光标位置函数

if (event === undefined || event === null) {

event = arguments.callee.caller.arguments[0] || window.event;

}

var obj = event.srcElement?event.srcElement:event.target;

if (pos > 0) {

pos = pos - 1;//因为把不匹配的字符删除之后,光标会往后移动一个位置

}

if(obj.setSelectionRange){

obj.focus();

obj.setSelectionRange(pos,pos);

} else if (obj.createTextRange) {

var range = obj.createTextRange();

range.collapse(true);

range.moveEnd('character', pos);

range.moveStart('character', pos);

range.select();

}

};

/*

* 只能输入数字和字母

*

*/

onlyNumAndAlphKeyUp=function(event){

if(event===undefined){

event=window.event;

}

var obj=event.srcElement?event.srcElement:event.target;

var pattern = /[^\w]/ig;

if(pattern.test(obj.value)) {

var i=getCursortPosition(event);

obj.value=obj.value.replace(pattern,'');

setCaretPosition(event,i);

}

};

页面代码:

只能输入数字:

只能输入数字和字母:

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

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

comm.js见附件

html文本框输入数字格式,html文本框只能输入数字相关推荐

  1. Excel中的数字格式与文本格式进行转换

    Excel中的数字格式与文本格式进行转换 有时候因为在excel中的单元格中要输入比较多的数字例如身份证号或者银行账户号等,excel中的单元格就会出现类似下面图片中的"乱文". ...

  2. Excel批量把数字格式变成文本格式且不用双击出现左上绿标

    Excel批量把数字格式变成文本格式且不用双击出现左上绿标 解决方案 问题描述: excel里面有大量数字,并且小数点后几位都不显示, 复制到txt文本里面都是缩略的数据, 于是设置成文本格式,复制过 ...

  3. 怎么把html格式转换成数字,Excel文本格式怎么转化成数字格式 excel文本转化数字格式教程...

    怎么将excel表格中的文本转化为数字格式呢?我们在使用excel表格的时候,数字格式的数据会更方便用户编辑,所以很多用户都会选择把文本格式转换为数字格式,具体如何操作大家请看下方的excel文本转化 ...

  4. java 必须是数字_[Java教程]限制只能输入数字

    [Java教程]限制只能输入数字 0 2016-05-16 14:00:06 当我们在一些网站注册账号.填写信息是,不小心将电话号码填写成汉字或其他英文字母了,这显然是不正确的.为了帮助用户更好地纠正 ...

  5. java数字格式化为货币字符串_Java把数字格式化为货币字符串实例代码

    数字可以标志货币.百分比.积分和电话号码等,就货币而言,在不同的国家会以不同的格式来定义,本实例将接收用户输入的数字,然后在控制台中输出其货币格式,其中使用了不同国家的货币格式. 思路如下:使用Num ...

  6. phpexcel 数字格式_phpexcel文本格式

    解决 PHPExcel 长数字串显示为科学计数 在excel中如果在一个默认的格中输入或复制超长数字字符串,它会显示为科学计算法,例如身份证号码,解决方法是把表格设置文本格式或在输入前加一个单引号. ...

  7. 【Vegas原创】导出Excel时,如何将数字格式转为文本格式?(07.12.13 Update)

    DataGrid: Asp.Net WebForm中DataGrid导出的时候,在ItemDataBound内  if(e.Item.ItemType == ListItemType.Item ||  ...

  8. java中自定义输入数字格式_Java 创建并使用自定义数字格式、35;###、####.#####和语言环境...

    import java.util.*; import java.text.*; /* nowjava - 时代Java 提 供 */ public class DecimalFormatDemo { ...

  9. js正则检测输入内容为数字,包括负数,整数,浮点数,亲测可用.JS检测整数,js检测浮点数,js检测负数,js检测数字,js限制输入框只输入数字,解决H5 number类型只能输入正数问题.

    JS 正则实现数字检测和限制输入,包括整数.浮点数.负数(亲测可用) 网上搜了一下,居然可以直接拿来用的很少,要么就是只能检测正整数.要么是只能检测浮点数,总之很多都不适合,而H5提供的type=&q ...

最新文章

  1. 如何使用JavaScript漂亮地打印JSON?
  2. ibase4j nginx配置
  3. linux qemu 报错 Unable to reserve 0xfffff000 bytes of virtual address space at 0x1000 解决方法
  4. JavasSript实现秒转换为“天时分秒”控件和TDD测试方法应用
  5. 消费金融和信用卡本质上的区别是什么?
  6. ASP.NET Core on K8S深入学习(2)部署过程解析与部署Dashboard
  7. 向DataGridView中添加新的一行数据,可以添加到最后一行或作为第一行
  8. python tkinter button_[转载]Python Tkinter之Button(转载)
  9. QT5.10+MinGW+OpenCV3.4.2编译
  10. 中兴网络设备交换机路由器查看所有端口光功率命令
  11. APEX光学分析设计软件
  12. 第1章 信息系统综合知识
  13. Openwrt平台搭建
  14. 微信扫码签到系统asp源码2.0示例
  15. 湖北移动B863AV3.1-M2_S905L3A_UWE5621DS_安卓9语音线刷包--支持语音-首页正常-设置不要密码-灯正
  16. 一文读懂区块链与大数据的关系
  17. Python OpenCv 车牌检测识别(边缘检测、HSV色彩空间判断)
  18. 【转载】区块链-概述
  19. 联通2g信号显示无服务器,联通卡2g没信号怎么办
  20. 每日linux命令学习-sed

热门文章

  1. 搭建Air版本FISCO BCOS联盟链(v3.x)
  2. vue实现机器人聊天
  3. Android开发资源分享合集
  4. 毕业后5年 决定你职业生涯高度
  5. 汽车设计与技术系列讲解 汽车理论制动内燃机视频教程
  6. Excel不用对表内容做任何操作一键删除隐藏的行
  7. 1000句常用英语口语
  8. .Net Core3.1 集成Log4net
  9. linux7查看计划任务,CentOS7 计划任务
  10. java锁-synchronized