日期:2014-05-16  浏览次数:20312 次

JavaScript:只能输入数字(IE、FF)

  一、不带负号的输入

这里,没有解决“正负号”的问题。

由于“正负号”必须出现在数字的最前端,因此,必须要判断当前光标所在的位置是否在输入文本框的首位。

<script language="JavaScript" type="text/javascript" >
<!--
//调用方式:onkeydown = "DigitInput(this,event);"
function DigitInput(el,ev) {
//8:退格键、46:delete、37-40: 方向键
//48-57:小键盘区的数字、96-105:主键盘区的数字
//110、190:小键盘区和主键盘区的小数
//189、109:小键盘区和主键盘区的负号

var event = ev || window.event; //IE、FF下获取事件对象
var currentKey = event.charCode||event.keyCode; //IE、FF下获取键盘码

//小数点处理
if (currentKey == 110 || currentKey == 190) {
if (el.value.indexOf(".")>=0)
if (window.event) //IE
event.returnValue=false; //e.returnValue = false;效果相同.
else //Firefox
event.preventDefault();

} else
if (currentKey!=8 && currentKey != 46 && (currentKey<37 || currentKey>40) && (currentKey<48 || currentKey>57) && (currentKey<96 || currentKey>105))
if (window.event) //IE
event.returnValue=false; //e.returnValue = false;效果相同.
else //Firefox
event.preventDefault();

}
-->

</script>

  二、带负号的输入

  判断带负号的输入,则必须要知道光标的位置,也就是说,只有当光标在最前端时,负号才有效。

<script language="JavaScript" type="text/javascript" >
<!--
//调用方式:onkeydown = "DigitInput(this,event);"
function DigitInput(el,ev) {
//8:退格键、46:delete、37-40: 方向键
//48-57:小键盘区的数字、96-105:主键盘区的数字
//110、190:小键盘区和主键盘区的小数
//189、109:小键盘区和主键盘区的负号

var event = ev || window.event; //IE、FF下获取事件对象
var currentKey = event.charCode||event.keyCode; //IE、FF下获取键盘码

//小数点处理
if (currentKey == 110 || currentKey == 190) {
if (el.value.indexOf(".")>=0)
if (window.event) //IE
event.returnValue=false; //e.returnValue = false;效果相同.
else //Firefox
event.preventDefault();

} else
//负号处理
if (currentKey == 189 || currentKey == 109) {
if (getPosition(el)>0 || el.value.indexOf("-")>=0)
if (window.event) //IE
event.returnValue=false; //e.returnValue = false;效果相同.
else //Firefox
event.preventDefault();
} else
if (currentKey!=8 && currentKey != 46 && (currentKey<37 || currentKey>40) && (currentKey<48 || currentKey>57) && (currentKey<96 || currentKey>105))
if (window.event) //IE
event.returnValue=false; //e.returnValue = false;效果相同.
else //Firefox
event.preventDefault();

}
/**
* 获取光标所在的字符位置
* @param obj 要处理的控件, 支持文本域和输入框
* @author hotleave
*/
function getPosition(obj){
var result = 0;
if(obj.selectionStart){ //非IE浏览器
result = obj.selectionStart
}else{ //IE
var rng;
if(obj.tagName == "TEXTAREA"){ //如果是文本域
rng = event.srcElement.createTextRange();
rng.moveToPoint(event.x,event.y);
}else{ //输入框
rng = document.selection.createRange();
}
rng.moveStart("character",-event.srcElement.value.length);
result = rng.text.length;
}
return result;
}

-->

</script>

getPosition(obj)函数,是一个获取光标位置的通用函数。

为了减少传入的参数,事件对象是可以通过事件获取的:

友情链接: 爱易网 云虚拟主机技术 云服务器技术 程序设计技术 开发网站 APP开发教程
Copyright © 2013-2024 爱易网页 当前在线:677人  网站在1时52分51秒内访问总人数:74564人 当前 29.46%  粤ICP备18100884号-2