【问题标题】:jQuery check is letter is available in the arrayjQuery检查数组中是否有字母
【发布时间】:2014-08-07 19:11:00
【问题描述】:

我仍然对 jQuery 代码有疑问。

当用户在输入中输入内容时,我想检查数组中的字符串中的字符。如果数组中有任何第一个字符可用,我想显示“VALID”。

var postcodes = ["00-240","80","32","90","91", "8", "11"];

    $('input[name="text-391"]').keyup(function(){
        var val = this.value;
        var m =  $.map(postcodes,function(value,index){
           var reg = new RegExp('^'+val+'.*$')
           return value.match(reg);
        });
        if(m.length && val.length) {
          $('#error').hide(300);
        } else {
          $('#error').show(300);
        }
    });

此代码检查输入中的所有用户类型是否都在数组中,但我想逐个检查这个字母。

例如:

用户类型:0 - 没关系

用户类型:00 - 还可以

用户类型 00-340 - 不行,现在我想显示警告,我们在数组中没有它

用户类型:3 - 没关系

用户类型:35 - 不行,现在我想显示警告,我们在数组中没有它

用户类型 80-125 - 仍然可以 [重要]

用户类型 11-1 - 还可以 [重要]

我将非常感谢任何提示。问候

【问题讨论】:

    标签: javascript jquery arrays string


    【解决方案1】:

    您需要在$.map中添加以下代码

    if(val.length>2 && val.indexOf("-")>-1 && !(value.indexOf("-")>-1))
            val= val.substring(0,val.indexOf("-"))
    

    这是工作的DEMO

    解释:

    您只想检查输入值长度是否大于两个并且它包含-,并且映射中的值不应包含-(您需要最后一个和条件,如“xx-xxx”这样的字母

    谢谢

    【讨论】:

    • 非常感谢!效果很好!
    【解决方案2】:

    你必须同时检查它:

       var m =  $.map(postcodes,function(value,index){
           var reg = new RegExp('^'+val+'.*$')
           var result=value.match(reg);
           if (result.length) {
               return result;
           } else {
               reg = new RegExp('^'+value+'.*$')
               return val.match(reg);
           }
       });
    

    如果您首先根据邮政编码创建一个正则表达式数组,然后在回调函数中通过索引引用它们,则可以进一步优化。

    【讨论】:

    • 抱歉,我无法理解这里有什么。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-07-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-20
    相关资源
    最近更新 更多