如何为!this.value添加值?

时间:2018-08-10 16:07:56

标签: javascript html keyup

如何为它添加值,使其仅允许数字输入?

function validatemycode() {
    $('datagroup').on('keyup', 'input[id^="datagroup_1"]', function () {
        if (!this.value){
            alert('Alert Message Here.');
        }
    })
}

4 个答案:

答案 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'])构成一个数组。

  1. 我们从输入中制作一个数组(与上一步相同)。

  2. 如果数组的所有通过测试,则
  3. 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
}

希望这会有所帮助。