是否可以在JavaScript中的表单文本条目上验证多个值?

时间:2013-07-26 04:23:58

标签: javascript jquery forms validation

这是我的代码:

function validate() {
    if (document.getElementById('check_value').value == 'this') {
        $('#block').fadeIn('slow');
    }
    else {
        alert("Nope. Try again");
    }
}

我尝试这样做:

function validate() {
    if (document.getElementById('check_value').value == 'this','that','those') {
        $('#block').fadeIn('slow');
    }
    else {
        alert("Nope. Try again");
    }
}

......它只接受任何输入的内容。这甚至可以吗?

7 个答案:

答案 0 :(得分:3)

这也有效。

function validate() {
    var acceptableValues = { 
        this: undefined, 
        that: undefined, 
        those: undefined 
    },
    value = document.getElementById('check_value').value;

    if ( acceptableValues.hasOwnProperty(value) ) {
        $('#block').fadeIn('slow');
    }
    else {
        alert("Nope. Try again");
    }
}

和此:

function validate() {
    var value = document.getElementById('check_value').value;

    switch (value) {
        case: 'this':
        case: 'that':
        case: 'those':
            $('#block').fadeIn('slow'); break;
        default:
            alert("Nope. Try again");
    }
}

答案 1 :(得分:2)

喜欢这个

var val = document.getElementById('check_value').value;

if (val  == 'this' || val =='that'  || val =='those'){
     //pass
}

如果您想接受任何内容,请删除if条件或查看length

value
    if (val.length >0){
      //pass
    }

答案 2 :(得分:2)

您可以使用数组作为允许值,并使用indexOf进行检查。像这样:

function validate() {
    if (['this','that','those'].indexOf(document.getElementById('check_value').value) == -1)  {
        $('#block').fadeIn('slow');
    }
    else {
        alert("Nope. Try again");
    }
}

答案 3 :(得分:1)

简短的回答是否定的。

您需要将每个选项与||运算符进行比较。

另一种选择是使用这样的正则表达式:

function validate() {
    var values = ['this', 'that', 'those'];
    if (document.getElementById('check_value').value.search(new RegExp('^('+values.join('|')+')$')) > -1) {
        $('#block').fadeIn('slow');
    }
    else {
        alert("Nope. Try again");
    }
}

小提琴:http://jsfiddle.net/78PQ8/1/

你也可以创建自己的原型这种动作:

String.prototype.is = function(){
    var arg = Array.prototype.slice.call(arguments);
    return this.search(new RegExp('^('+arg.join('|')+')$')) > -1;
} 

并且打电话就是这样:

function validate() {
    if (document.getElementById('check_value').value.is('this', 'that', 'those')) {
        $('#block').fadeIn('slow');
    }
    else {
        alert("Nope. Try again");
    }
}

答案 4 :(得分:1)

您可以尝试使用regex test

var myregex=/this|that|those/i;

function validate() {
    if(myregex.test(document.getElementById('check_value').value)){
        $('#block').fadeIn('slow');
    }
    else {
        alert("Nope. Try again");
    }
}

已更新,如果您只想验证this,that and those 然后试试这个regex

var myregex=/^(this|that|those)$/i;

答案 5 :(得分:1)

var correctArr = ['this','that','those'];

function validate(val){
    isCorrect = false
    $.each(correctArr, function(index,element){

            if(val.indexOf(element)>-1){
                isCorrect =  true;
            }
        }
    )
    return isCorrect;
}

答案 6 :(得分:0)

如果您希望每个值都可以:

var val = document.getElementById('check_value').value;

if( val.length > 0 ) {

}

这意味着字符串必须至少为1个字符。更常见的方法是:

if( val != '' ) {

}