如何为它添加值,使其仅允许数字输入?
function validatemycode() {
$('datagroup').on('keyup', 'input[id^="datagroup_1"]', function () {
if (!this.value){
alert('Alert Message Here.');
}
})
}
答案 0 :(得分:1)
无Regex版本:
function validatemycode() {
$('datagroup').on('blur', 'input[id^="datagroup_1"]', function () {
if (!isValidInput(this.value)) {
alert('Alert message here.');
}
});
}
function isValidInput(value) {
var allowedCharacters = '0123456789'.split('');
return string.split('').every(function (char) {
return allowedCharacters.includes(char);
});
}
在isValidInput
中发生的是:
1.我们用0123456789
(= ['1','2','3','4','5','6','7','8','9']
)构成一个数组。
我们从输入中制作一个数组(与上一步相同)。
every
返回true
,即:(原始字符串的)当前字符为包含在allowedCharacters
数组中。如果有一个不是数字的字符,我们将返回false
。
这在函数式编程中也是不错的练习。
注意:这在Internet Explorer上不起作用(因为那里不支持includes
)。
答案 1 :(得分:0)
您可以使用RegExp.prototype.test(),它返回true或false。
var a = "abcABC";
var b = 1321321;
var c = "21321abc";
var d = "132 1321 ";
//only numbers
console.log(/^[0-9]+$/g.test(a))
console.log(/^[0-9]+$/g.test(b))
console.log(/^[0-9]+$/g.test(c))
console.log(/^[0-9]+$/g.test(d))
在您的代码中:
function validatemycode() {
$('datagroup').on('blur', 'input[id^="datagroup_1"]', function () {
if (/^[0-9]+$/g.test(this.value)){
alert('Alert message here.');
}
})
}
答案 2 :(得分:0)
您可以使用RegExp
来检查是否有不是数字[^0-9]
的字符
$('.datagroup').on('blur', function () {
if (!this.value || this.value.match(new RegExp("[^0-9]", "g"))){
console.log('Not Ok');
}else{
console.log("Ok")
}
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input class="datagroup"/>
答案 3 :(得分:0)
您可以使用一种方法来检查字符串是否包含数字以外的内容。见下文:
var containsLettersOrCharacters = function(value) {
var split = value.split('');
for(var i = 0; i < split.length; i++) {
if(isNaN(Number(split[i]))) {
return true;
}
}
return false;
}
在这里,我们使用split()
将字符串分成单个字符,然后循环遍历每个字符并检查Number(character)
的值是否为NaN
。如果isNaN()
在此处返回true,则表示该字符不是数字。
这里重要的是,针对非字符串格式数字的字符串使用Number()会产生NaN值。
可以这样使用:
if(containsLettersOrCharacters(value)) {
//the string contained something other than numbers
}
希望这会有所帮助。