簡體   English   中英

javascript,僅允許負數和正數以及十進制最多6位數字

[英]javascript to allow only negative and positive numbers and decimal upto 6 digits on keypress

我需要驗證cshtml頁面中的文本框,以僅接受負數或正數以及最多6個小數位。 到目前為止,這是我嘗試過的。

function AcceptUptoSixDecimalPlacesWithNegative(event, elem) {

if ((event.which != 46 || $(elem).val().indexOf('.') != -1) && (event.which < 48 || event.which > 57)) {
    if (event.keyCode !== 8 && event.keyCode !== 46 && event.keyCode !== 9 && event.keyCode !== 0 && event.keyCode !== 45) { //exception
        event.preventDefault();
    }
}

var text = $(elem).val();

if ((text.indexOf('.') != -1) && (text.substring(text.indexOf('.')).length > 6)) {
    if (event.keyCode !== 8 && event.keyCode !== 46 && event.keyCode !== 9) { //exception
        event.preventDefault();
    }
}

這可以幫助我在小數點后達到六位數,但同時也允許所有特殊字符和字母。

任何有關此問題的幫助將不勝感激。

謝謝。

您可以使用Regex檢查值:

var re = /^-?\d*\.?\d{0,6}$/; 
var text = $(elem).val();

var isValid = (text.match(re) !== null);

正則表達式表示:

^:字符串的開頭

-? :一個或零個“-”

\\ d *:0到無窮大

\\。? :0或1“。

\\ d {0,6}:從0到6個數字

$:字符串結尾

您可以使用JavaScript的isNaN()函數。

 var inputPrevValue = ""; $(document).ready(function () { $("#numbersOnly").change(function () { if (isNaN($(this).val()) || $(this).val().length > 6) { $(this).val(inputPrevValue); } else { inputPrevValue = $(this).val(); } }); }); 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js"></script> <input type="text" id="numbersOnly"> 

這是一個(非常簡單的)示例,用於測試輸入的數字是否小於6個字符。 如果不是,它將恢復為最后一個可接受的值。

以下是有助於您解決問題的函數列表:

  1. Math.sign()檢查其正/ 0,負/ 0和NaN
  2. 數字 MDN包含數字功能列表
  3. parseFloat()
  4. 小數點正則表達式后計算數字,即。 \\ d +([。\\ d {1,6}] *)\\

在您的上下文中,以下示例中的驗證組合:

let x = elem;
if(Math.sign(x) === 1 || Math.sign(x) === -1) && ...
// decimal validations

希望這可以幫助。

***正在添加評論,因為還沒有訪問權限!!!

嘗試使用正則表達式“ ^ [0-9] +(。[0-9] {1,2})?$”驗證文本,然后繼續進行邏輯運算。 js代碼:

var patt = new RegExp("^[0-9]+(.[0-9]{1,6})?$");
var res = patt.test(str);

如果res為true,則繼續,否則返回false;否則,返回false。

  1. 不要驗證按鍵。 更改輸入值的方法有很多。 處理oninput事件。
  2. 您可以將值視為字符串並使用正則表達式進行驗證,但我認為最好將字符串和與數字有關的函數結合使用

例如:

<input type="number" step="any" oninput="validate(this)" />  

function validate(input){
  var number = parseFloat(input.value);
  if( number == input.value && input.value.length <= number.toFixed(6).length ){ /* valid! */ }
}

http://jsfiddle.net/tto2yvwj/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM