我有以下内容:
<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中。如果是这样,请不要添加到数组中。如果没有,则添加到阵列。但是,数组会随着重复值而不断增长。
我做错了什么?
提前感谢。
答案 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);
});
});