![](/img/trans.png)
[英]Allow only positive and negative numbers in textbox using JavaScript regex
[英]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個字符。 如果不是,它將恢復為最后一個可接受的值。
以下是有助於您解決問題的函數列表:
在您的上下文中,以下示例中的驗證組合:
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。
oninput
事件。 例如:
<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! */ }
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.