Я пытаюсь создать уникальный список taskID, основанный на выборе. В каждой задаче могут быть не более двух компаний. Моя проблема заключается в том, что сравнение taskID ниже не выполняется. Мой код:сравнение массива
<script>
$().ready(function() {
$.validator.addMethod(
"findRegex",
function(value, element) {
return /^.+::[1-9]\d{0,11}$/.test(value);
},
"Please check your input."
);
$('#myForm').validate({
submitHandler: function(form){
$("#formSub").html('<table style="font-size:11px; color:#333;"><tr><td><img border="0" src="images/ajax-loader.gif"/></td><td>Saving! Please wait...</td></table>');
var options = {
success: showResponse,
url:'addValidation2.cfm?t=1'
};
$('#myForm').ajaxSubmit(options);
return false;
}
});
$('select[name^=compName]').change(function() {
var tid = $(this).attr('name').split('-')[1];
var j = $(this).attr('name').split('-')[2];
var currTaskIDs = $("#taskIDList").val();
// begin: create the task list:
var arr = [];
var arr2 = [];
var arr3 = [];
if (currTaskIDs != '') {
if($.inArray(currTaskIDs, arr2) == -1) {
arr2.push(currTaskIDs);
}
}
if($.inArray(tid, arr) == -1) {
arr.push(tid);
}
arr3 = unionArr(arr,arr2);
alert(arr3);
$("#taskIDList").val(arr3);
// end
});
unionArr = function(x, y) {
var obj = {};
for (var i = x.length-1; i >= 0; -- i)
obj[x[i]] = x[i];
for (var i = y.length-1; i >= 0; -- i)
obj[y[i]] = y[i];
var res = []
for (var k in obj) {
if (obj.hasOwnProperty(k))
res.push(obj[k]);
}
return res;
}
$("input[name^=compName-]").each(function() {
$(this).rules("add", { findRegex: true });
});
});
</script>
<form id="myForm" name="myForm" method="post" action="">
task : 35
<select name="compName-35-1" id="compName-35-1">
<option value=""></option>
<option value="acme inc::30">acme inc::30</option>
<option value="my company::54781">my company::54781</option>
<option value="abc llc::42443">abc llc::42443</option>
<option value="zzzz">zzzz</option>
</select>
<select name="compName-35-2" id="compName-35-2" style="padding-left:20px;">
<option value=""></option>
<option value="acme inc::30">acme inc::30</option>
<option value="my company::54781">my company::54781</option>
<option value="abc llc::42443">abc llc::42443</option>
<option value="zzzz">zzzz</option>
</select>
<hr/>
task : 36
<select name="compName-36-1" id="compName-36-1">
<option value=""></option>
<option value="acme inc::30">acme inc::30</option>
<option value="my company::54781">my company::54781</option>
<option value="abc llc::42443">abc llc::42443</option>
<option value="zzzz">zzzz</option>
</select>
<select name="compName-36-2" id="compName-36-2" style="padding-left:20px;">
<option value=""></option>
<option value="acme inc::30">acme inc::30</option>
<option value="my company::54781">my company::54781</option>
<option value="abc llc::42443">abc llc::42443</option>
<option value="zzzz">zzzz</option>
</select>
<hr/>
task : 37
<select name="compName-37-1" id="compName-37-1">
<option value=""></option>
<option value="acme inc::30">acme inc::30</option>
<option value="my company::54781">my company::54781</option>
<option value="abc llc::42443">abc llc::42443</option>
<option value="zzzz">zzzz</option>
</select>
<select name="compName-37-2" id="compName-37-2" style="padding-left:20px;">
<option value=""></option>
<option value="acme inc::30">acme inc::30</option>
<option value="my company::54781">my company::54781</option>
<option value="abc llc::42443">abc llc::42443</option>
<option value="zzzz">zzzz</option>
</select>
<hr/>
<input type="submit" name="btnSave" id="btnSave" value="Save"/>
<hr/>
<input type="text" name="taskIDList" id="taskIDList" value="" />
<div id="formSub"></div>
- я выбрать две компании для задачи 35. taskIDList TextBox дисплеев 35. < прохода>
- я выбрать две компании для задачи 36, taskIdList TextBox отображает: 36,36 , 35 < fail> Должно отображаться 36, 35.
- Я выбираю одну компанию для задачи 37, taskIdList правильно добавляет 37 к списку. Затем я меняю компанию, тогда taskIdList становится 37,37,36,36,35: < fail>
Как я могу убедиться, что список уникален?
заранее спасибо
Я добавил $ ("# taskIDList"). Val (jQuery.unique (arr3)); но это не сработает. если я выбираю первую и вторую компанию из задачи 36, мой список становится 36,36,35 – CFNinja
Функция 'unique' не встроена. Вы должны добавить функцию, как показано в ответе, который я связал выше. Это * не * 'jQuery.unique() ', который работает только с элементами DOM. Вы попробовали это? –
добавил Array.prototype.unique и называется arr3 = arr.concat (arr2) .unique(); но я все еще не могу понять. – CFNinja