`

兼容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="" onkeyup="checkInputInt(this);"><p>

 
0
1
分享到:
评论

相关推荐

    个人CSS设计兼容性问题总结教程

    在IE8及以上版本,文本居中显示是默认的,但在IE6和IE7中,可以使用`line-height = height`实现居中,但可能会导致输入框内的光标大小改变。解决这个问题的一个技巧是使用`!important`来优先应用`line-height:0px;`...

    div+css ie6-8 FF等多浏览器兼容

    - **cursor问题**:`cursor:pointer`可以在IE和Firefox中显示手指状光标,而`hand`仅在IE中有效。 - **链接样式问题**:在Firefox中为链接添加边框和背景色,需要设置`display:block`,并设置`float:left`以防止换行...

    如何让div+css兼容ie6 ie7 ie8 ie9和FireFox Chrome等浏览器.pdf

    针对标题提及的"如何让div+css兼容ie6 ie7 ie8 ie9和FireFox Chrome等浏览器",这里将详细讨论一些关键的CSS兼容性问题及解决方案。 1. **DOCTYPE的影响**: DOCTYPE声明会影响浏览器进入何种文档模式。在HTML4或...

    jsp浏览器的兼容性

    本文档旨在帮助 JSP 开发人员解决浏览器之间的兼容性问题,提出解决方法,涵盖 Firefox、谷歌、百度和 IE6/7/9 浏览器的兼容问题。 1.Div 的高度参数值后加 px 在设置 Div 的高度时,需要在参数值后加上 px,例如 ...

    js完美解决jsp文本框限制只能输入数字、小数问题

    ### js完美解决JSP文本框限制只能输入数字、小数问题 在Web开发过程中,确保用户输入的数据符合预期格式是一项非常重要的任务。特别是在涉及到数值输入时,开发者常常需要限制文本框仅能接受数字或者带有一定数量...

    上下左右键控制table中光标(兼容多浏览器)

    本文将详细讲解如何使用JavaScript实现输入框内上下左右键以及Enter键控制表格(table)中的光标移动,并在光标到达最后一个输入框时新增一行,确保这个功能在多个浏览器中都能正常工作。 首先,我们需要理解...

    光标处插入,兼容IE6,IE7,FF等,适用于编辑器,浏览插入表情

    本文将围绕“光标处插入”这一主题,深入探讨如何在不同的浏览器环境下,如IE6、IE7和Firefox(FF)中实现兼容性的光标插入功能,特别适用于编辑器中的表情浏览和插入。 首先,让我们了解光标插入的基本概念。在Web...

    chrome浏览器-键盘和鼠标快捷键.pdf

    本文将详细介绍Chrome浏览器中常用的键盘和鼠标快捷键,帮助用户更好地掌握这些技巧,提高日常浏览体验。 #### 二、Windows平台下的快捷键 ##### 2.1 标签页与窗口操作 - **Ctrl+N**:打开新窗口。 - **Ctrl+T**...

    浏览器兼容性解决方法

    IE支持使用URL加载自定义光标图像,而Firefox仅支持部分格式,这要求开发者在提供自定义光标时,考虑到浏览器的兼容性。 #### 12. Select元素问题 IE在处理`select`元素时存在bug,尤其是与CSS的交互。Firefox则更...

    div+css 兼容ie6 ie7 ie8 ie9和FireFox Chrome等浏览器方法.pdf

    针对`IE6`、`IE7`、`IE8`、`IE9`以及`Firefox`、`Chrome`等浏览器的兼容性问题,我们可以采取以下策略: 1. **DOCTYPE声明**:DOCTYPE声明会影响浏览器进入不同的渲染模式。为了确保统一的行为,通常使用XHTML 1.0...

    CSS完美兼容IE6_IE7_FF的通用方法

    特别是在早期的Web开发中,如何让网站同时兼容Internet Explorer 6(简称IE6)、Internet Explorer 7(简称IE7)以及Firefox等浏览器成为了一大难题。本文将详细介绍几种常用的CSS兼容性处理技巧,特别是针对这些老...

    光标定位方法

    获取光标位置通常有两种方式:一种是针对IE浏览器的支持,另一种则是对Firefox和其他现代浏览器的支持。 ##### IE支持 对于Internet Explorer(IE)浏览器,可以通过`document.selection`对象来获取光标的位置: ...

    浏览器兼容性CSS,IE6,IE7,FF

    本文主要针对IE6、IE7和Firefox(FF)这三种浏览器的CSS兼容性进行详解。 首先,我们来看一下如何处理CSS兼容性问题。一种常用的方法是利用CSS Hack,即针对特定浏览器添加特定的样式规则。例如,对于`height`属性...

    textbox只能输入数字

    总的来说,实现"TextBox只能输入数字"这一功能有多种方式,你可以根据项目需求和喜好选择合适的方法。无论是通过监听文本变化还是键盘按键,或者使用现成的`MaskedTextBox`控件,都能有效限制用户输入,确保数据的...

    chrome、firefox、IE中input输入光标位置错位解决方案

    这种方法可以确保在Chrome、Firefox和IE中,输入框的光标位置保持相对一致,提供更良好的跨浏览器兼容性。 总结来说,输入框光标位置错位是由于浏览器对CSS样式解析的差异造成的。通过理解这些差异并采用适当的CSS...

    css样式兼容不同浏览器的问题

    例如,`height` 属性在IE6、IE7和其他浏览器如Firefox中的解析方式就有所不同。解决这一问题的方法包括: - **通用属性**:`height:100px;` 这是所有现代浏览器都能识别的属性。 - **IE6专用**:`_height:100px;` ...

    页面一载入光标定位到文本框,并选中其中文字

    在网页设计和开发中,有时候我们需要实现这样的功能:当页面加载完成后,自动将光标定位到特定的文本框,并选中文本框内的全部文字。这个功能常见于表单填写、搜索框或者任何需要用户快速输入的场景,可以提高用户...

    div css完美兼容IE6IE7FF的通用方法

    在网页设计中,CSS(层叠样式表)的兼容性问题始终是开发者面临的挑战,特别是对于老版本的浏览器,如Internet Explorer(IE6和IE7)以及Firefox。本文主要介绍了几种针对这些浏览器的CSS兼容性解决方案。 首先,...

    调整input里面的输入光标大小并兼容主流浏览器

    在进行网页设计和前端开发时,调整input输入框的输入光标大小以及保证其在不同主流浏览器中的兼容性是一个常见的需求。这一需求涉及到CSS样式的设置,特别是与height和line-height属性的使用。 首先,我们来看基本...

    20201231-蓝色光标-2020年教育行业在线数字化转型白皮书.pdf

    20201231-蓝色光标-2020年教育行业在线数字化转型白皮书.pdf

Global site tag (gtag.js) - Google Analytics