/** 只能输入2位小数 */
function checkNumber2(e,txt) {
/* 获取光标位置 */
var cursurPosition=0;
if(txt.selectionStart){//非IE
cursurPosition= txt.selectionStart;
}else{//IE
try{
var range = document.selection.createRange();
range.moveStart("character",-txt.value.length);
cursurPosition=range.text.length;
}catch(e){
cursurPosition = 0;
}
}
var key = window.event ? e.keyCode : e.which;
var keychar = String.fromCharCode(key);
reg = /\d|\.|-/;
/* result 为 false 就表示不可以再输入 */
var result = reg.test(keychar);
if(result) {
if(e.keyCode==46){
/* 如果输入的是小数点,判断是否已经存在小数点 */
result=!(txt.value.split('.').length>1);
} else {
/* 如果不是小数点,要是已经存在小数点,而且小数点后面已经存在两位小数,而且光标是在小数点之后,就不可以输入 */
/*获取小数点的位置 */
if (txt.value.split('.').length>1) {
var pointIndex = txt.value.split('.')[0].length;
if (cursurPosition <= pointIndex) {
/* 表示输入的是整数部分 */
result = true;
} else {
/* 表示输入的是小数部分 */
if (txt.value.split('.')[1].length>1) {
result = false;
}
}
}
}
}
return result;
}
<input type='text' class="td-input number" value="" onkeypress="return checkNumber2(event,this);" />
只能输入数字 . - ,用class中的number去控制负号的位置,保证输入的是合法数字。(也就是jQuery的validate方法)
因为这里用的是onkeypress,所以当已经有两位小数的时候再在小数点之后输入数字就没有任何反应。
if (txt.value.split('.')[1].length>1) {
result = false;
}
修改这里面的1,就可以改变控制的长度。比如改成3就是最多输入四位小数。