jQuery检查数组中是否有字母

时间:2014-08-07 19:11:01

标签: javascript jquery arrays string

我仍然遇到jQuery代码问题。

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

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 - 它仍然可以 [重要]

我将非常感谢任何提示。此致

2 个答案:

答案 0 :(得分:0)

您必须双向检查:

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

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

答案 1 :(得分:0)

您需要在$.map

中添加以下代码
if(val.length>2 && val.indexOf("-")>-1 && !(value.indexOf("-")>-1))
        val= val.substring(0,val.indexOf("-"))

这是工作DEMO

说明:

您只想检查输入的值长度是否超过两个且它包含-,并且地图中的值不应包含-(您需要最后一个字母条件,如“xx-xxx”

由于