Ⅰ js怎麼實現能多選的下拉框,點一個選中一個
Hi,你的操作就是當已經選擇過的情況下你需要刪除掉數組的相應值。
我幫你改寫了一下,數組值需要存儲選框的下標就可以了的。
<script language="javascript">
var sel = [];
function OnClick() {
var i_ts_desc = document.getElementById("i_ts_desc");
var index = i_ts_desc.selectedIndex;
var iHas = -1;
sel.sort();
for (var i = 0; i < sel.length; i++) {
if (sel[i] == index) {
iHas = i;
} else {
i_ts_desc[sel[i]].selected = true;
}
}
if (iHas == -1) {
sel.push(index);
i_ts_desc[index].selected = true;
} else {
sel.splice(iHas, 1);
i_ts_desc[index].selected = false;
}
}
</script>
<select id="i_ts_desc" multiple="multiple" onclick="OnClick();" >
<option value="A">0</option>
<option value="B">1</option>
<option value="C">2</option>
<option value="D">3</option>
<option value="E">4</option>
<option value="F">5</option>
</select>
Ⅱ js實現兩個下拉框聯動
這類問題貌似蠻多的。
不過是這個純HTML需要麼?沒有數據交互?與伺服器數據交互得重新封裝的。
下面是純HTML用的JS。
<html>
請選擇:
<select id="test2" onchange="setSel(this);">
<option value='1'>1</option>
<option value='2'>2</option>
</select>
注意這里:
<select id="test1">
<option value='1'>1</option>
<option value='2'>2</option>
<option value='3'>2</option>
</select>
這里添加了(注意):
<select id="test3">
</select>
<script>
function setSel(obj){
var s=obj.value;
var f=document.getElementById("test1");
var obj=document.getElementById("test3");
/*循環 相應變的select*/
for(i=0;i<f.options.length;i++){
/*判斷值相等的,也可以判斷顯示的f.options[i].test*/
if(f.options[i].value==s){
f.options[i].selected="selected";//選中
obj.options.add(new Option(f.options[i].text,f.options[i].value)); //這個兼容IE與firefox
}
}
}
</script>
</html>
Ⅲ jquery.multiselect.js 實現下拉框多選怎麼設置默認全部選中下拉框的值
<scriptsrc="../js/jquery-1.3.2.js"type="text/javascript"></script>
<scriptsrc="../js/jquery.multiSelect.js"type="text/javascript"></script>
<linkhref="css/jquery.multiSelect.css"rel="stylesheet"type="text/css"/>
我用的是jQueryMultiSelect插件下拉多選框,
Select:
<selectid="control_7"name="control_7[]"multiple="multiple"size="5">
<optionvalue="">請選擇</option>
<optionvalue="1">性病商務通</option>
<optionvalue="2">商務通</option>
<optionvalue="3">QQ</option>
<optionvalue="4">性病QQ</option>
<optionvalue="5">企業QQ</option>
<optionvalue="6">電話</option>
<optionvalue="7">性病電話</option>
<optionvalue="8">微信</option>
<optionvalue="9">競D1</option>
<optionvalue="10">競D2</option>
<optionvalue="11">競D3</option>
<optionvalue="12">競D4</option>
<optionvalue="13">400電話</option>
<optionvalue="14">掛號網</option>
</select>
jQueryMultiSelect插件:
.......................
if(jQuery)(function($){
//渲染HTML的一個單一的選項
functionrenderOption(id,option)
{
varhtml='<label><inputtype="checkbox"name="'+id+'[]"value="'+option.value+'"';
if(option.selected){
html+='checked="checked"';
}
html+='/>'+option.text+'</label>';
returnhtml;
}
//渲染選項/的HTMLoptgroups
functionrenderOptions(id,options,o)
{
varhtml="";
for(vari=0;i<options.length;i++){
if(options[i].optgroup){
html+='<labelclass="optGroup">';
if(o.optGroupSelectable){
html+='<inputtype="checkbox"class="optGroup"/>'+options[i].optgroup;
}
else{
html+=options[i].optgroup;
}
html+='</label><divclass="optGroupContainer">';
html+=renderOptions(id,options[i].options,o);
html+='</div>';
}
else{
html+=renderOption(id,options[i]);
}
}
returnhtml;
}
我提交的時候都變沒了,就一個了,我想要的是我選中幾個默認選中就是幾個。
在調用這個插件前用jquery設置optin的selected屬性
JavaScript code?
Ⅳ Extjs怎麼實現下拉框多選
|1、擴展js類庫,在項目中建立一個 js文件,命名為:xxx.js 其代碼為
if('function'!==typeofRegExp.escape)
{
RegExp.escape=function(s)
{
if('string'!==typeofs)
{
returns;
}
returns.replace(/([.*+?^=!:${}()|[]/\])/g,'\$1');
};
}
Ext.ns('Ext.form');
Ext.form.MultiSelect=Ext.extend(Ext.form.ComboBox,
{
checkField:'checked',
multi:true,
separator:',',
initComponent:function()
{
if(!this.tpl)
{
this.tpl='<tplfor=".">'+'<divclass="x-combo-list-item">'
+'<imgsrc="'+Ext.BLANK_IMAGE_URL+'"'
+'class="ux-MultiSelect-iconux-MultiSelect-icon-'
+'{[values.'+this.checkField+'?"checked":"unchecked"'
+']}">'
+'{[values.'+this.displayField+']}'
+'</div>'
+'</tpl>';
}
Ext.form.MultiSelect.superclass.initComponent.apply(this,arguments);
this.on(
{
scope:this,
beforequery:this.onBeforeQuery,
blur:this.onRealBlur
});
this.onLoad=this.onLoad.createSequence(function()
{
if(this.el)
{
varv=this.el.dom.value;
this.el.dom.value='';
this.el.dom.value=v;
}
});
},
initEvents:function()
{
Ext.form.MultiSelect.superclass.initEvents.apply(this,arguments);
this.keyNav.tab=false;
},
beforeBlur:function()
{
},
postBlur:function()
{
},
clearValue:function()
{
this.value='';
this.setRawValue(this.value);
this.store.clearFilter();
this.store.each(function(r)
{
r.set(this.checkField,false);
},this);
if(this.hiddenField)
{
this.hiddenField.value='';
}
this.applyEmptyText();
},
getCheckedDisplay:function()
{
varre=newRegExp(this.separator,"g");
returnthis.getCheckedValue(this.displayField).replace(re,this.separator+'');
},
getCheckedValue:function(field)
{
field=field||this.valueField;
varc=[];
varsnapshot=this.store.snapshot||this.store.data;
snapshot.each(function(r)
{
if(r.get(this.checkField))
{
c.push(r.get(field));
}
},this);
returnc.join(this.separator);
},
onBeforeQuery:function(qe)
{
qe.query=qe.query.replace(newRegExp(RegExp.escape(this.getCheckedDisplay())+'['+this.separator+']*'),'');
},
onRealBlur:function()
{
this.list.hide();
varrv=this.getRawValue();
varrva=rv.split(newRegExp(RegExp.escape(this.separator)+'*'));
varva=[];
varsnapshot=this.store.snapshot||this.store.data;
Ext.each(rva,function(v)
{
snapshot.each(function(r)
{
if(v===r.get(this.displayField))
{
va.push(r.get(this.valueField));
}
},this);
},this);
this.setValue(va.join(this.separator));
this.store.clearFilter();
},
onSelect:function(record,index)
{
if(this.fireEvent('beforeselect',this,record,index)!==false)
{
record.set(this.checkField,!record.get(this.checkField));
if(this.store.isFiltered())
{
this.doQuery(this.allQuery);
}
if(this.multi)
{
if(record.get("key")=="---"&&record.get(this.checkField))
{
this.setValue("---");
}
else
{
this.setValue(this.getCheckedValue());
}
}
else
{
this.clearValue();
this.value=record.get(this.valueField);
this.setRawValue(record.get(this.displayField));
this.list.hide();
}
this.fireEvent('select',this,record,index);
}
},
setValue:function(v)
{
if(v)
{
v=''+v;
if(this.valueField)
{
this.store.clearFilter();
this.store.each(function(r)
{
varchecked=!(!v.match('(^|'+this.separator+')'
+RegExp.escape(r.get(this.valueField))
+'('+this.separator+'|$)'));
r.set(this.checkField,checked);
},this);
this.value=this.getCheckedValue();
this.setRawValue(this.getCheckedDisplay());
if(this.hiddenField)
{
this.hiddenField.value=this.value;
}
}
else
{
this.value=v;
this.setRawValue(v);
if(this.hiddenField)
{
this.hiddenField.value=v;
}
}
if(this.el)
{
this.el.removeClass(this.emptyClass);
}
}
else
{
this.clearValue();
}
},
selectAll:function()
{
this.store.each(function(record)
{
record.set(this.checkField,true);
},this);
this.doQuery(this.allQuery);
this.setValue(this.getCheckedValue());
},
deselectAll:function()
{
this.clearValue();
}
});
Ext.reg('multiSelect',Ext.form.MultiSelect);
2、在ext-all.css文件最後,加入css樣式
.ux-MultiSelect-icon{width:16px;height:16px;float:left;background-position:-1px-1px!important;background-repeat:no-repeat!important;}
.ux-MultiSelect-icon-checked{background:transparenturl(../images/default/menu/checked.gif);}
.ux-MultiSelect-icon-unchecked{background:transparenturl(../images/default/menu/unchecked.gif);}
3、使用
varDepartUserStore=newExt.data.Store(
{
proxy:newExt.data.HttpProxy(
{
url:'/Web/Manage/DeskTop/JSON/ScheleManager/GetSimpleDepartUserInfo.aspx'
}),
//讀取Json
reader:newExt.data.JsonReader(
{totalProperty:"totalCount",root:"root"},
[
{name:'UserId',type:'int'},
{name:'UserName',type:'string'}
])
});
varDepartUserCbox=newExt.form.MultiSelect(
{
fieldLabel:'姓名',
labelStyle:'width:80px',
width:150,
editable:false,
id:'DepartUserDS',
hiddenName:'DepartUserIdDS',
store:DepartUserStore,
emptyText:'--請選擇--',
allowBlank:false,
blankText:'請選擇',
mode:'remote',
displayField:'UserName',
valueField:'UserId',
triggerAction:'all',
selectOnFocus:true,
listWidth:200
});
DepartUserStore.on('load',function()
{
DepartUserCbox.selectAll();//全選
});
DepartUserStore.load();
Ⅳ js怎麼能取得多選下拉框選中的多個值
方法:獲取多選下拉框對象數組→循環判斷option選項的selected屬性(true為選中,false為未選中)→使用value屬性取出選中項的值。實例演示如下:
1、HTML結構
<selectid="test"multiple="true">
<optionvalue="option-A">option-A</option>
<optionvalue="option-B">option-B</option>
<optionvalue="option-C">option-C</option>
<optionvalue="option-D">option-D</option>
</select>
<inputtype="button"value="確定"onclick="fun()"/>
2、javascript代碼
functionfun(){
varselect=document.getElementById("test");
varstr=[];
for(i=0;i<select.length;i++){
if(select.options[i].selected){
str.push(select[i].value);
}
}
alert(str);
}
3、效果演示