我試過這個。這隻接受整數。我想既是消極的也是非消極的。Jquery接受負值和非負值
$(function() {
$('.spinner').keyup(function() {
if (this.value.match(/[^0-9]/g)) {
this.value = this.value.replace(/[^0-9]/g, '');
}
});
});
我試過這個。這隻接受整數。我想既是消極的也是非消極的。Jquery接受負值和非負值
$(function() {
$('.spinner').keyup(function() {
if (this.value.match(/[^0-9]/g)) {
this.value = this.value.replace(/[^0-9]/g, '');
}
});
});
沒有測試過,但你嘗試過這樣的事情:
$(function() {
$('.spinner').keyup(function() {
if (this.value.match(/[^0-9-]/g)) {
this.value = this.value.replace(/[^0-9-]/g, '');
}
});
});
通過添加額外的「 - 」在REG-EX:第一種是指定一個範圍,第二一個實際的字符。
您還可以細化的全過程,始終將值設置爲:匹配的一切:
^[-]{0,1}[0-9]+
啓動線由什麼或 - 隨後的數字繼承,至少一個或多個。
沒有必要進行匹配和替換。取而代之的
if (this.value.match(/[^0-9]/g)) {
this.value = this.value.replace(/[^0-9]/g, '');
}
使用
this.value = this.value.replace(/([+-]?\d+)/, '$1');
我假設你只希望找到在該領域一個整數。
您可以繼續使用正則表達式,或者如果你喜歡「純邏輯」這對於我的眼睛是更具可讀性,你可以用這樣的代碼:
$('.spinner').keyup(function (evt) {
var previousValue = $(this).data("prev") || "";
var currentValue = this.value;
var valid = true;
if (currentValue.length > 0 && currentValue !== "-") {
//having something we can check:
var number = Number(currentValue);
//integer only if not NaN and integer value equals
valid = (!isNaN(number) && parseInt(number, 10) == number);
}
if (valid) {
$(this).data("prev", currentValue);
} else {
//restore last good value:
this.value = (previousValue.length == 0) ? "" : parseInt(previousValue, 10);
}
});
這將檢查每一個時間,如果該值有效的整數當無效時,恢復通過驗證的先前值。
請注意使用而不是parseInt()
,這是由於後面允許像「5a」這樣的東西被解析爲5而Number("5a")
將給出NaN值。
你能告訴我什麼樣的HTML元素是'$('。spinner')'? – kidwon
@PeterHerdenborg是的,它應該。他只需要刪除非數字,如果它包含非數字。 – Barmar
是的,抱歉,我弄錯了,這就是爲什麼我刪除了我的評論。 –