js控制input只能輸入兩位小數

/** 只能輸入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就是最多輸入四位小數。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章