有一个用jQuery制作的左右选择框
想要实现的效果,
点左边的的添加到右边
需要判断右边是否已有要添加的选项,有的话不添加,没有的话添加。
解决方案 »
- window.open
- 请问这样写有什么意义?
- js如何实现页面内的跳转??
- JS 连环弹出层--求源代码
- 如何屏蔽window.open打开窗口标题栏的url显示,在线等。
- 在html页面中,如何用程序判断本机是否连接到因特网?
- 怎么从子窗口向父窗口传递数据?请前辈帮帮忙,在线等!
- 请问如何设定出现告警框时不可键盘提交。急!(新手求救)
- 如何用dhtml、javascript实现excel的功能:纵坐标和横坐标的标题栏固定在一个地方,而纵横坐标的内容可以随滚动条的滚动而滚动?
- easyui的datebox怎么禁用掉(disable)
- 如何禁止表单里的自动提示?
- JavaScript构造类的问题
是这个吗?
* 合并数组,并去掉重复的元素
* @param {Object} arr
* @param {Object} t : true,进行数组排序,false:不排序
*/
function uniqueArray(arr, t){
with (arr)
return !t ? join(",").match(/([^,]+)(?!.*\1)/ig) : reverse().join(",").match(/([^,]+)(?!.*\1)/ig).reverse();
}
1、把你点击的左面的数据放在一个array数组里面,右面的也放在一个数组里面。
2、然后清空你右面的所有数据
3、利用函数uniqueArray(arr, t)去掉数组里面重复的选项
4、填充右面的数据=== 结贴,给分 ===
得到满意的答案,立即结贴给分,是一种良好的习惯和美德
*
*@author: develop_design_level
*@date: 2009-11-05
* 去掉数组中的重复元素,并且根据第二个参数可以反转原有数组
* @param: arr 需要去重的数组
* @param: t :false or 忽略,不反转原有数组; true,反转原有数组
* 例子:
*
* var tempA = ['a','a',2,3,3,3,54,5,76,5];
* var _arr = uniqueArray(tempA,true);
* alert(tempA + '\r' +_arr);
*
*/
if ($("#alreadPerson").children().length >4)
{
alert ("最多只能添加5项");
return false;
}
for(var i=0; i<$("#alreadPerson").children().length; i++) //关键是这里怎么写,如何循环判断?
{
if($("#alreadPerson").val(i)==$("#waitPerson").val())//如何比较?如何判断该项已被选择!
{
alert ("该选项已经被选择"); //给出结果
return false;
}
}
$("#waitPerson option:selected").clone().appendTo("#alreadPerson");
});
选择框代码: <div id="container">
<div>
<span>人员选择</span>
<div id="left">
<span>左边项</span>
<select id="waitPerson" multiple="multiple">
<option>人员一</option>
<option>人员二</option>
<option>人员三</option>
<option>人员四</option>
<option>人员五</option>
<option>人员六</option>
</select>
</div>
<div id="btns" style="border:none">
<input id="moveToRight" type="button" value="添加" />
<input id="moveToLeft" type="button" value="删除" />
</div>
<div id="right">
<span>右边项</span>
<select id="alreadPerson" multiple="multiple">
</select>
</div>
</div>
</div>
$("#waitPerson option:selected").each(function(){
var waitObj=this;
$("#alreadPerson").children().each(function(){
waitObj.value==this.value&&$(waitObj).removeAttr("selected");
});
});
把这个代码放到$("#waitPerson option:selected").clone().appendTo("#alreadPerson");
前面后就只有第一次选择后能添加,第二次第三次就不行了,
function addItem(objForm)
{
var valueAry=new Array();
var textAry=new Array();
var leftElement=objForm.elements["userId"];
var rightElement=objForm.elements["nowid"];
var leader=objForm.elements["leader"];
var count=0;
var i,j,k,flag;
for(i=0;i<leftElement.options.length;i++)
{
if(leftElement.options[i].selected)
{valueAry[count]=leftElement.options[i].value;
textAry[count]=leftElement.options[i].text;
count++;
}
}
var count1=rightElement.options.length;
count1=count1>0?count1:0;
for(j=0;j<count;j++)
{
flag=false;
for(k=0;k<count1;k++)
{
if(rightElement.options[k].text==textAry[j])
flag=true;
}
if(!flag)
{
rightElement.options[count1]=new Option(textAry[j],valueAry[j]);
rightElement.options[count1].selected=true;
leader.options[count1]=new Option(textAry[j],valueAry[j]);
count1++;
}
}
}function subItem(objForm)
{
var i;
var objElement=objForm.elements["nowid"];
var objElement2=objForm.elements["leader"];
for(i=objElement.options.length-1;i>=0;i--)
{
if(objElement.options[i].selected)
objElement.options[i]=objElement2.options[i]=null;
// objElement2.options[objElement.options.length-1]=null;
}
}function addAllItem(objForm)
{
var i;
var leftElement=objForm.elements["userId"];
for(i=0;i<leftElement.options.length;i++)
{
leftElement.options[i].selected=true;
}
addItem(objForm);
}
function subAllItem(objForm)
{
var i;
var rightElement=objForm.elements["nowid"];
// for(i=0;i<rightElement.options.length;i++)
for(i=rightElement.options.length-1;i>=0;i--)
rightElement.options[i].selected=true;
subItem(objForm);
}