FALCONSEYE
Programmer
I am using jQuery. I am trying to create a unique taskID list based on the selections. Each task may have 2 companies at the most. My problem is the taskID comparison below fails. My code:
1. i select two companies for task 35. taskIDList textbox displays 35. < pass >
2. i select two companies for task 36, taskIdList textbox displays : 36,36,35 < fail > it should be displaying 36, 35.
3. i select one company for task 37, taskIdList correctly adds 37 to the list. Then I change the company, then the taskIdList becomes 37,37,36,36,35 : < fail >
how can i make sure that the list is unique ?
Code:
<script>
$().ready(function() {
$('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 = [];
if (currTaskIDs != '') {
for(var i=0; i<currTaskIDs.length; i++) {
if( $.inArray(currTaskIDs, arr2) == -1) {
arr2.push(currTaskIDs);
}
}
}
if( $.inArray(tid, arr2) == -1) {
arr2.push(tid);
}
arr = arr2.unique();
$("#taskIDList").val(arr);
// end
});
Array.prototype.unique =
function() {
var a = [];
var l = this.length;
for(var i=0; i<l; i++) {
for(var j=i+1; j<l; j++) {
if (this[i] === this[j])
j = ++i;
}
a.push(this[i]);
}
return a;
};
});
</script>
</head>
<body>
<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>
</form>
1. i select two companies for task 35. taskIDList textbox displays 35. < pass >
2. i select two companies for task 36, taskIdList textbox displays : 36,36,35 < fail > it should be displaying 36, 35.
3. i select one company for task 37, taskIdList correctly adds 37 to the list. Then I change the company, then the taskIdList becomes 37,37,36,36,35 : < fail >
how can i make sure that the list is unique ?