工作中碰到这样一个问题:在页面上有一个输入框供用户输入,当用户输入了数字后需要对这个数字进行一下比较,刚开始并没有想到使用javascript进行两个数字比较时会出点小问题。
示例:
在页面上有一个输入框:
<input id="inputPageNumber" type="text" onkeypress="if(event.keyCode==13){changePage();return false;};"/>
用户在输入框输入内容后按回车,即会调用一个changePage()方法,这个方法在最开始先要做一些检测如用户输入的内容是否是数字等,同时也要对用户输入的内容与某个数字进行比较
function changePage(){ var totalPages = 2000; //基数,测试使用。用来做比较 //获取用户输入的内容 var inputNumber = document.getElementById("inputPageNumber").value; //正则表达式 var isNumber = /\d/; var objExp=new RegExp(isNumber); //验证用户输入的内容是否为数字 if(objExp.test(inputNumber)==true){ //验证用户输入的数字是否大于基数,或者小于1 if(inputNumber > totalPages || inputNumber < 1 ) { alert("输入的页数不合法!"); return false; }
注意看红色部分if(inputNumber > totalPages || inputNumber < 1 ) 在这里我刚开始是直接进行比较,后来发现如果用户输入的是以大于2开头的数字,则inputNumber > totalPages会为true,这样一来就达不到我想要的效果,经过上网搜索发现有很多人遇到同样的问题,当前也有很多的解决方案,最后我通过试验采用如下的方式即可以解决此问题,特此记下一笔
关键字代码:
var inputNumber = parseInt(inputNumber); //使用parseInt函数进行数字转换,有点像Java里的强转
经过强转后的数字就可以直接使用比较符合进行比较了。
同理如果是float类型数字,则可以使用parseFloat();函数进行转换。