2013-09-24 70 views
0

這裏是代碼的HTML,允許在一個文本框只有一個小數點:文本框只允許浮點數

<html> 
<head> 

<script type="text/javascript" language="javascript"> 

    function isNumberKey(evt) { 
     var charCode = (evt.charCode) ? evt.which : event.keyCode 


     if (charCode > 31 && (charCode < 48 || charCode > 57) && charCode != 46) 
      return false; 
     else { 
     var input = document.getElementById("txtChar").value; 
      var len = document.getElementById("txtChar").value.length; 
      var index = document.getElementById("txtChar").value.indexOf('.'); 

      if (index > 0 && charCode == 46) { 
       return false; 
      } 
      if (index >0 || index==0) { 
       var CharAfterdot = (len + 1) - index; 
       if (CharAfterdot > 2) { 

        return false; 
       } 

     } 

    if (charCode == 46 && input.split('.').length >1) { 
     return false; 
     } 


     } 
     return true; 
     } 
     </script> 


</head> 
<body> 
<input type="text" id="txtChar" onkeypress="return isNumberKey(event)" name="txtChar" class="CsstxtChar" maxlength="4"/> 
</body> 
</html> 

我想用C#。這代碼,這樣做在asp.net工作不正常在asp.net中。

+0

你可以設置小提琴 – Amit

+1

你可以添加正則表達式驗證器代替java腳本。如果你在代碼後面(c#),那麼頁面將被回發。 –

+0

可能的重複:http://stackoverflow.com/questions/10150877/allowing-input-only-for-float-number – Ashish

回答

0

使用這一點,將是有益的....

$('.urInputField').keyup(function(e){ 
    var val = $(this).val(); 
    var regexTest = /^\d{0,8}(\.\d{1,2})?$/; 
    var ok = regexTest.test(val); 
    if(ok) { 
     $(this).css('background-color', 'green'); 
    } else { 
     $(this).css('background-color', 'red'); 
    } 
}); 
0

控件的ID可以從當您使用父子控制或使用主頁面,以便在例如asp.net源輸入的內容有所不同。 ..,所以,你不能簡單地使用document.getElementById。

因爲我看到你的代碼不僅僅是爲了阻止非數字鍵,因爲其他人建議重複的解決方案,但它也阻止退格鍵或箭頭鍵,並對小數點後的數字數量進行限制,使得只有一個數字是允許在點之後。我不會更改您在代碼中使用的這些自定義算法。

此代碼獲取引起從事件參數的按鍵源元素:

<script type="text/javascript" language="javascript"> 

    function isNumberKey(event) { 
     var e = event || window.event; 
     var src = e.srcElement || e.target; 
     var charCode = e.which || e.keyCode || e.charCode; 
    //document.getElementById("label").value = src.id; //just for test/debug 

     if (charCode > 31 && (charCode < 48 || charCode > 57) && charCode != 46) 
      return false; 
     else 
     { 
      var input = src.value; 
      var len = input.length; 
      var index = input.indexOf('.'); 

      if (index > 0 && charCode == 46) return false; 

      if (index > 0 || index == 0) { 
       var CharAfterdot = (len + 1) - index; 
       if (CharAfterdot > 2) return false; 
      } 

      if (charCode == 46 && input.split('.').length > 1) { 
       return false; 
      } 

     } 

     return true; 
    } 
    </script> 
+0

我不知道你計劃從'if(CharAfterdot> 2)return false'它沒有你可能需要的效果。你能解釋一下你需要什麼樣的限制嗎? –

0

使用此源將工作好與浮點數

功能ISNUMBER(EVT){

evt = (evt) ? evt : window.event; 
var charCode = (evt.which) ? evt.which : evt.keyCode; 

if (charCode != 46 && charCode > 31 && (charCode < 48 || charCode > 57)) { 
    return false; 
} 
return true; 

}

感謝Vamsi