easyui-numberbox限定仅输入数字

时间:2020-12-27 04:11:20

许多必填项都涉及到数字,比如电话号码,身份证号这些要求用户在输入时只能输入数字。Easyui提供了数字框控件,允许用户只输入数字,

<td>
<input id="ssd" type="text" class="easyui-numberbox" data-options="precision:'2'"
name="ssd" value="0" style="width:100px;"
onkeyup="noNum(this)" />

</td>

这是普通输入框,采用easyui-numberbox控件,经过测试发现,在输入法为英文输入法时,的确只能输入数字,但是在中文输入法下,键盘上的任何字符都可以随便输入。这显然不符合用户需求。虽然html提供了一个限制输入法的方法,style="ime-mode:disabled ",但是只支持IE,其他浏览器都不支持该方法。

方案:

既然控件无法解决,只能另外写方法。最简单的方法就是用正则表达式,将不是数字的字符剔除,以下js来源于百度,非原创。请支持原创作者。

/******只允许输入数字和小数点*****/
function noNum(obj)
{
obj.value = obj.value.replace(/[^\d.]/g,""); //清除“数字”和“.”以外的字符
obj.value = obj.value.replace(/^\./g,""); //验证第一个字符是数字而不是.
obj.value = obj.value.replace(/\.{2,}/g,"."); //只保留第一个. 清除多余的.
obj.value = obj.value.replace(".","$#$").replace(/\./g,"").replace("$#$",".");//保证.只出现一次,而不能出现两次以上
}