jquery数组问题

时间:2010-07-16 15:51:58

标签: jquery arrays

我有以下内容:

<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 个答案:

答案 0 :(得分:2)

尝试更改

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

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

答案 1 :(得分:1)

首先,makeArray用于将类似数组的对象作为输入,而不是字符串。我在这里看不到目的。如果你有一个实际的数组arr(可能使用split制作),你可以这样做:

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

您当前的代码调用String.indexOf(arr),因此arr会隐式转换为(逗号分隔的)字符串。然后在新值中搜索数组字符串。这显然不是你想要的。

答案 2 :(得分:1)

我相信你所使用的是$.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()返回 postion < / em>元素,-1如果找不到的话)。然后我们只是用相同的分隔符调用.join()将它变回一个字符串。

答案 3 :(得分:0)

这就是诀窍:

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