是否可以在JavaScript中输入表单文本时验证多个值

Is it possible to validate multiple values upon form text entry in JavaScript?

本文关键字:文本 验证 表单 输入 JavaScript 是否      更新时间:2023-09-26

这是我的代码:

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

它完全接受输入的任何内容。这样做可能吗?

这也有效。

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

像这个

var val = document.getElementById('check_value').value;
if (val  == 'this' || val =='that'  || val =='those'){
     //pass
}

如果你想接受任何东西,只需删除If条件或检查valuelength

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

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

function validate() {
    if (['this','that','those'].indexOf(document.getElementById('check_value').value) == -1)  {
        $('#block').fadeIn('slow');
    }
    else {
        alert("Nope. Try again");
    }
}
var correctArr = ['this','that','those'];
function validate(val){
    isCorrect = false
    $.each(correctArr, function(index,element){
            if(val.indexOf(element)>-1){
                isCorrect =  true;
            }
        }
    )
    return isCorrect;
}

您可以尝试类似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;

简短的回答是否定的。

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

另一种选择是使用类似的regexp:

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

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

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

var val = document.getElementById('check_value').value;
if( val.length > 0 ) {
}

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

if( val != '' ) {
}