2013-05-21 106 views

回答

0

什麼是這樣的:

$(".test").keyup(function (event) { 
if ((pointPos = this.value.indexOf('.')) >= 0) 
    $(this).attr("maxLength", pointPos+3); 
else 
    $(this).removeAttr("maxLength"); 
}); 

Here is工作提琴。

+0

我喜歡你的工作。我遇到了問題,當我達到2小數'23.45',再次我不能插入小數點前像234.45。它甚至在刪除小數點之前的數字 –

+0

@Aioros:Hai代碼正在工作。但有一個問題是在輸入數字後刪除按鈕不起作用。你知道原因嗎? – user2156088

0

你可以使用的最大長度屬性,嘗試

$(".test").keyup(function (event) { 
     var last = $(this).val()[$(this).val().length - 1]; 
     if (last == '.') { 
      $(".test").attr("maxlength", $(this).val().length+2); 
     } 
    }); 
2

這個小改變了代碼就足夠了:

this.value = this.value.replace (/(\.\d\d)\d+|([\d.]*)[^\d.]/, '$1$2'); 

本質更換小數點之後通過任何數量的數字小數點和前兩位數字。或者如果輸入非數字,則將其刪除。

+0

它允許字符。可以發佈只允許固定小數位的數字的代碼。謝謝。 –

0

在提交表單之前,您不應該擔心用戶在輸入內容。那時你真的不在乎那裏有什麼。但是,如果要警告輸入無效,則可以在檢測到不合格輸入時在屏幕上顯示一條消息,例如,

<script> 

function validate(element) { 
    var re = /^\s*\d*\.?\d{0,2}\s*$/; 
    var errMsg = "Number must have a maximum of 2 decimal places"; 
    var errNode = document.getElementById(element.name + '-error') 
    if (errNode) { 
    errNode.innerHTML = re.test(element.value)? '' : errMsg; 
    } 
} 

</script>  

你或許應該也提上了更改處理的監聽器也以考慮通過其他方式到達那裏值。

0
$(document).on("keyup", ".ctc", function() 
{ 

    if (!this.value.match(/^\s*\d*\.?\d{0,2}\s*$/) && this.value != "") { 
     this.value = ""; 
     this.focus(); 
     alert("Please Enter only alphabets in text"); 
    } 
}); 
相關問題