我有三个文本框(多行),如果第一个文本框数据在第一个文本框中可用,那么这些数字将被删除。 像
t1:123456,12345678,9898998,4545454,
t2:123456,66666666
当我按 filter 按钮时,第三个文本框数据将
t3:12345678,9898998,4545454,
代码:
function GetDistinctElements(source, source1, target) {
var input = source.value.trim().replace(/\s/g, '').split(',');
var input1 = source1.value.trim().replace(/\s/g, '').split(',');
input = input.filter(function (val) {
return input1.indexOf(val) == -1;
});
var distinctArray = input.filter(function (item, pos) {
return input.indexOf(item) == pos;
});
target.value = distinctArray.join(',');
}
但是当我在数字后面输入;
时,它也会以;
为数字。
如果我输入逗号(,
)或分号(;
),则应接受这些,并执行过滤。
答案 0 :(得分:0)
我会将它分解为数组,迭代,然后重新创建字符串。这避免了使用简单的字符串替换来管理逗号的问题。这是代码:
var val1 = $("#1").val();
var val2 = $("#2").val();
var array1 = val1.split(",");
var array2 = val2.split(",");
var val3 = "";
var count = 0;
for (var i = 0; i < array1.length; i++) {
if (!($.inArray(array1[i], array2) >= 0)){
if (count > 0)
val3 = val3 + ",";
val3 = val3 + array1[i];
count++;
}
}
$("#3").val(val3);
&#13;
这是一个小提琴:http://jsfiddle.net/82etmett/1/
答案 1 :(得分:0)
var input = source.value.trim().replace(/\s/g, '').replace(/;/g,',').split(',');
你错过了 replace(/;/g,',')
。