代码之家  ›  专栏  ›  技术社区  ›  Kung Fu Ninja

jquery数组问题

  •  0
  • Kung Fu Ninja  · 技术社区  · 16 年前

    我有以下几点:

    <script>
    $().ready(function() {
    
     $("#myVal#").blur(function() {
       var arr = jQuery.makeArray(  $("#myArr").val() )
    if ( $("#myVal").val().indexOf(arr) == -1 || $("#myVal").val().indexOf(arr) ==0) {
        arr.push($("#myVal").val());
    }
    $("#myArr").val(arr)
    });
    });
    </script>
    <form action="" method="post" name="myF" id="myF">
     <input type="text" name="myVal" id="myVal" value="">
     <input type="text" name="myArr" id="myArr" value="">
     <br/>
    <input type="submit" name="submit" id="submit" value="go">
    </form>
    

    我正在检查输入myVal的特定值是否已经在myArr中。如果是这样,就不要添加到数组中。如果没有,则添加到数组中。但是,数组会随着重复值不断增长。

    我做错什么了?

    4 回复  |  直到 16 年前
        1
  •  1
  •   Matthew Flaschen    16 年前

    首先,makeArray意味着将类似数组的对象作为输入,而不是字符串。我看不出有什么目的。如果你有一个实际的数组 arr split ),您可以执行以下操作:

    if ( $.inArray($("#myVal").val(), arr) == -1)
    

    String.indexOf(arr) 阿里尔 隐式转换为(逗号分隔)字符串。然后在新值中搜索数组字符串。这显然不是你想要的。

        2
  •  2
  •   jigfox    16 年前

    尝试改变

     $("#myVal#").blur(function() {
             ^^^
    

    具有

     $("#myVal").blur(function() {
             ^^^
    
        3
  •  1
  •   Nick Craver    16 年前

    我相信你想要的是这样的东西 $.inArray()

    $(function() {
     $("#myVal").blur(function() {
       var arr = $("#myArr").val().split(',');
       if ($.inArray($("#myVal").val(), arr) == -1) arr.push($("#myVal").val());
       $("#myArr").val(arr.join(','));
     });
    });​
    

    Try a demo here ,如果值有逗号,则会中断…只需选择适当的分隔符。现在要做的是把绳子拔出来 .split() $.inArray() 返回 元素的, -1 .join() 使用相同的分隔符将其转换回字符串。

        4
  •  0
  •   Ankur    13 年前

    这就成功了:

    $().ready(function () {
         var arr = [];
         $("#myVal").blur(function () {
             if ($.inArray($('#myVal').val(), arr) == -1) {
                 arr.push($("#myVal").val());
             }
             $("#myArr").val(arr);
         });
    });