兼容IE和FirFoxl浏览器---只能输入数字-定位光标

<script type="text/javascript">
var leng;
var rex=/\d{1,}\.{0,1}\d{0,}/;
//去掉左边空格
function ltrim(s) 
{ 
 return s.replace(/(^\s*)/g, ''); 
} 

//去掉右边空格
function rtrim(s) 
{ 
return s.replace(/(\s*$)/g, ''); 
} 

//去掉左右空格
function trim(s){ 
return rtrim(ltrim(s));  
} 

function checkInputInt(obj){
          //获得光标的初始位置
          var start=obj.selectionStart;
          var end=obj.selectionEnd;
		  var report=document.getElementById(obj.id).value;
          var reportItem=trim(report);
		  //获取光标处输入的字符
		  var res=report.substring(start-1,start);
				if(typeof document.selection != "undefined")
                 {
				   //支持IE浏览器
					var s=document.selection.createRange();   
					s.setEndPoint("StartToStart",obj.createTextRange()) 
					len=trim(s.text).length;
                 }else{
				     //支持FirFox浏览器
				     obj.focus();
					 obj.setSelectionRange(start,end);
				 }
		  //记录文本框开始处输入的字符
          var temp=report.substring(0,1);
          
          if(reportItem=='' || reportItem==null){
          			document.getElementById(obj.id).value=report.substring(report.length);
          }else{
             var count=report.substring(0,report.length-reportItem.length);
             var countLength=count.length;
			 var countStr="";
			 //去掉左边的空格符
             for(var i=0;i<countLength;i++){
                 countStr+=" ";
             }
			 //统计最左边有多少个非数字的字符
			 var j=0;
			 for(var i=0;i<report.length;i++){
			       var a=report.charAt(i);
                   if(!a.match(rex)){
			         j++;
			       }
			 }
             
			 //验证输入字符的最左端的字符是否为数字并定位光标
			 if(!temp.match(rex)){
                //移除最左边的非数字字符
			   document.getElementById(obj.id).value=report.substring(j,report.length);
				//定位光标
				if(typeof document.selection != "undefined")
                  {
				        var range=obj.createTextRange(); 
                        range.moveStart('character',0);
                        range.collapse(true); 
                        range.select();
                   }else{
					    obj.focus();
			            obj.setSelectionRange(0,0);
                   } 
            }   
         }
       clearInnerNumInt(obj,temp,res,start,end);
	   //输入0时直接置为1
	   if(parseInt(report)<1){
	      document.getElementById(obj.id).value=1;
	   }
}
 function clearInnerNumInt(obj,temp,res,start,end){
        var reqStr=document.getElementById(obj.id).value;
		var size=reqStr.length;
		var noStr="";
		var k=0;
		var s=0;
		for(var i=0;i<size;i++){
		   noStr=reqStr.charAt(i);
		    if(!noStr.match(rex)){
			   //统计非数字的字符数量
			   k++;
			   IgnoreStrInt(obj.id,reqStr);
			}
			if(noStr==" "){
			   //统计输入空字符的字符数量
			   s++;
			}
		}
  		
		if(typeof document.selection != "undefined")
        {
		   //支持IE浏览器
            var range = obj.createTextRange();
			//验证非数字定位光标
			if(temp.match(rex)){
			    //alert("dd");
		       if(len>0&&len<size){
                  range.moveStart('character',len-k);   
			   }else{
                  range.moveStart('character',len);
			   }
			}else{
			   range.moveStart('character',0);
			}

			//验证输入空字符串定位光标
			if(s>0){
			  range.moveStart('character',len);
			}
			range.collapse(true); 
            range.select();
         }else{
		    //支持FirFox浏览器
			if(!temp.match(rex)){      
			  obj.setSelectionRange(0,0);
			}else{
			     var resStr=document.getElementById(obj.id).value;
				 var resSize=resStr.length;
				  if(!res.match(rex)&&k>0){
				    obj.setSelectionRange(start-k,end-k);
				  }
			}
        } 

}
//去掉非数字的字符
function IgnoreStrInt(id,Str){
    var ResultStr="";
	var array=new Array();
    for(var n=0;n<Str.length;n++){
	    var b=Str.charAt(n);
		if(!b.match(rex)){
		   array[n]="";
		}else{
		   array[n]=b;
		}
	}
	for(var r=0;r<array.length;r++){
	   ResultStr+=array[r];
	}
    document.getElementById(id).value=ResultStr;
}
</script>
禁止在内容中输入非数字字符:<input type="text" id="name" value="" οnkeyup="checkInputInt(this);"><p>

 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值