4

这是我的代码:

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");
    }
}

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

4

7 回答 7

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");
    }
}
于 2013-07-26T04:30:30.583 回答
2

像这样

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

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

如果您想接受任何事情,只需删除 if 条件或length检查value

    if (val.length >0){
      //pass
    }
于 2013-07-26T04:25:47.327 回答
2

您可以将数组用于允许的值并使用 indexOf 进行检查。像这样:

function validate() {
    if (['this','that','those'].indexOf(document.getElementById('check_value').value) == -1)  {
        $('#block').fadeIn('slow');
    }
    else {
        alert("Nope. Try again");
    }
}
于 2013-07-26T04:29:43.443 回答
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;
}
于 2013-07-26T04:39:33.443 回答
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;
于 2013-07-26T04:35:09.433 回答
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");
    }
}
于 2013-07-26T04:30:13.613 回答
0

如果您希望每个值都是可能的:

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

if( val.length > 0 ) {

}

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

if( val != '' ) {

}
于 2013-07-26T04:28:18.077 回答