Javascript 输入框上键检查(验证)

Javascript 输入框上键检查(验证),javascript,jquery,html,Javascript,Jquery,Html,我的阵列 var foo = {}; foo['xarr'] = [ "23" ]; foo['yarr'] = [ "21","21","22","23","24"]; foo['zarr']= [ "70","71","72","73","74","75" ]; 输入框最多包含4个字符,我有一个数组对象 当用户输入前两个字符并且它与我想在div上添加一个类的数组匹配时,我需要。 如果它与foo['xarr']匹配,则添加一些不同的类;如果它与foo['yarr']匹

我的阵列

var foo = {};
    foo['xarr'] = [ "23" ];
    foo['yarr'] = [ "21","21","22","23","24"];
    foo['zarr']= [ "70","71","72","73","74","75" ];
输入框最多包含4个字符,我有一个数组对象 当用户输入前两个字符并且它与我想在div上添加一个类的数组匹配时,我需要。 如果它与foo['xarr']匹配,则添加一些不同的类;如果它与foo['yarr']匹配,则添加一些不同的类,依此类推

我的html标记:

<li class="Images">
    <div>
        <input type="text" name="cnumber1" class="inputBx" style="width:58px;" maxlength="4" size="4"/>            
    </div>
    <span class="test"></span>
</li>

您的代码中有一些我不理解的内容:

for(var key in foo) {
    if( foo[key].indexOf(inputVal) >= 0){
       if(foo[key] == 'xarr' ){
            //...
       }
    }
}
键在foo对象中,所以它是xarr、yarr或zarr。然后foo[key]是一个数字数组,它可以更正句子foo[key]。indexOfinputVal>=0。为什么foo[key]会等于字符串“xarr”或“yarr”? 在继续您的研究之前,我建议您进行以下更正:

for(var key in foo) {
    var idx = foo[key].indexOf(inputVal); //search in the array
    if(  idx >= 0){
       if(key == 'yarr'){
            $('.cardImages .test ').addClass('fullOpactiy');
       }
       else{
          $('.Images .test ').addClass('fullOpacity');  
       }
       return true;//ends your search now, no need to continue
    }
}
我认为这种匹配算法是次优的,但它应该可以工作

干杯


Grooveek

这对我来说很有效

for(var key in foo) {
    var idx = foo[key].indexOf(inputVal); //search in the array
    if(  idx >= 0){
       if(key == 'yarr'){
            $('.cardImages .test ').addClass('fullOpactiy');
       }
       else{
          $('.Images .test ').addClass('fullOpacity');  
       }
       return true;//ends your search now, no need to continue
    }
}
var foo = [];
foo['xarr'] = ["23"];
foo['yarr'] = ["21", "21", "22", "23", "24"];
foo['zarr'] = ["70", "71", "72", "73", "74", "75"];


$('.inputBx').keyup(function() {
    var inputVal = this.value;
    iLen = inputVal.length;
    if (iLen >= 2) {
        if ($.inArray(inputVal, foo['xarr']) >= 0) {
            $('.Images, .test').addClass('fullOpactiy')
        }
        if ($.inArray(inputVal, foo['yarr']) >= 0) {
            $('.cardImages, .test').addClass('fullOpactiy')
        }
        if ($.inArray(inputVal, foo['zarr']) >=0) {
            $('.Images, .test').addClass('fullOpactiy')
        }
    }
});