
虽然不太明白为什么refresh方法不起作用,不过还有另外一个方法:
// data 是ajax返回的json数据$get("xxxhtmla=" + a, function (data) {
var site = new Array();
$each(data, function(index, values) {
//循环将data数据的结构重新调整为下面这样的:[{label:xxx,value:id}]
// laebl相当于option的文字,value则是option的value,结构不能错
sitepush({
label : valuessite_name,
value : valuesid
});
});
//重点是这里,不用refresh方法,用下面这个。
$("#site_id")multiselect('dataprovider',site);
});
如果你在查询数据库的时候直接就这样:
select id as value, city_name as label from 表名
那么返回值在js那里就不需要循环改变结构了,直接可以用:
$("#site_id")multiselect('dataprovider',data);
这个用js 的ajax实现,这个是3级的 级联菜单。前台用jquery,后台用 php写的,希望对你有帮助。
var category_0= <php echo isset($_POST['categories_0'])$_POST['categories_0']:"0";>;
var category_1=<php echo isset($_POST['categories_1'])$_POST['categories_1']:"0";>;
var select_template=<php echo isset($_POST['templates'])$_POST['templates']:"0";>;
//初始值 categorie_id=0;
var parms="categories_id="+0;
$ajax({
url:"ajax_templatephp",
data:parms,
async:false,
type:"get",
datatype:"json",
success:function(msg){
var content_arr=eval(msg);
var categories_arr=eval(content_arr[0]);
var template_arr=eval(content_arr[1]);
var op="<option value='0'>SELECT shops</option>"
$each(categories_arr,function(k,v){
if(k==category_0){
op+="<option value='"+k+"' selected>"+v+"</option>";
}else{
op+="<option value='"+k+"' >"+v+"</option>";
}
});
$("#categories_0")append(op);
}
});
//如果categories_1有选择某个值,则刷新后选择上一次的值作为刷新后的初始值。
if(category_1>0){
var parms="categories_id="+category_0;
$ajax({
url:"ajax_templatephp",
data:parms,
async:false,
type:"get",
datatype:"json",
success:function(msg){
var content_arr=eval(msg);
var categories_arr=eval(content_arr[0]);
var template_arr=eval(content_arr[1]);
var op="";
$each(categories_arr,function(k,v){
if(k==category_1){
op+="<option value='"+k+"' selected>"+v+"</option>";
}else{
op+="<option value='"+k+"' >"+v+"</option>";
}
});
$("#categories_1")append(op);
}
});
}
//如果templates有选择某个值,则刷新后选择上一次的值作为刷新后的初始值。
if(select_template>0){
var parms="categories_id="+category_1;
$ajax({
url:"ajax_templatephp",
data:parms,
async:false,
type:"get",
datatype:"json",
success:function(msg){
var content_arr=eval(msg);
var categories_arr=eval(content_arr[0]);
var template_arr=eval(content_arr[1]);
var op="";
$each(template_arr,function(k,v){
if(k==select_template){
op+="<option value='"+k+"' selected>"+v+"</option>";
}else{
op+="<option value='"+k+"' >"+v+"</option>";
}
});
$("#templates")append(op);
}
});
}
//categorie_0值改变,影响后面的两个 categorie_1,template选择框
$("#categories_0")bind("change",function(){
var select_val=$("#categories_0")val()
if(select_val>0){
$("#categories_1")empty();
$("#templates")empty();
var parms="categories_id="+select_val;
$ajax({
url:"ajax_templatephp",
data:parms,
async:false,
type:"get",
datatype:"json",
success:function(msg){
var content_arr=eval(msg);
var categories_arr=eval(content_arr[0]);
var template_arr=eval(content_arr[1]);
var op=""
$each(categories_arr,function(k,v){
op+="<option value='"+k+"' >"+v+"</option>";
});
$("#categories_1")append(op);
}
});
}else{
$("#categories_1")empty();
$("#templates")empty();
}
});
//categorie_0,categorie_1值改变,影响后面的template选择框
$("#categories_0,#categories_1")bind("change",function(){
createTemplate($("#categories_1")val() );
});
function createTemplate(category_id){
$("#templates")empty();
var parms="categories_id="+category_id;
$ajax({
url:"ajax_templatephp",
data:parms,
async:false,
type:"get",
datatype:"json",
success:function(msg){
var content_arr=eval(msg);
var categories_arr=eval(content_arr[0]);
var template_arr=eval(content_arr[1]);
var op="";
$each(template_arr,function(k,v){
op+="<option value='"+k+"' >"+v+"</option>";
});
$("#templates")append(op);
}
});
}
如果页面是服务端代码的话,用个循环输出内容及标签就可以了
如果是html代码的话,用ajax请求后台方法,输出json,然后前台js动态绑定到select就行了,这个部分可以参考easyui的combobox,一句js就可以搞定:$('#你的select标签ID')combobox('loadData', result);,result是返回的json
你的问题都没有说明运行环境和技术,只能这样给你个思路了
动态生成的 现在可以监听到所有的下拉框的事件 但是该怎么区分是选择的哪行的下拉框 进行数组组装呢?
因为每次新增都需要重新渲染一下 所以lay-verify的值也是动态生成的
目前是可以拿到所有select的监听
java 代码 是后台执行 , 在前台 是无法执行的 ,
如果要从后台获取数据 要使用ajax的方式 在回调函数里面增加选项
function addOneOption(){$ajax({
url:url,
success:function(data){
var optionlist = eval('(' +data + ')');
var selectObj=documentgetElementById("user_dm");
var option = documentcreateElement("option");
for(var t = 0 ;t < optionlistlength;t++)
{
optionvalue=optionlist[t];
optioninnerHTML = t;
selectObjappendChild(option);
}
},
});
var selectObj=documentgetElementById("user_dm");
var option = documentcreateElement("option");
for(var t = 0 ;t < optionlistlength;t++)
{
optionvalue=optionlist[t];
optioninnerHTML = t;
selectObjappendChild(option);
}
</script>
====================================
<body>
<select id="user_dm" name="user_dm">
</select><br>
<input type="button" onClick="addOneOption()" value="添加">
</body>
documentgetElementByid('sel')onchange=function(){
documentgetElementsByTagName('body')[0]stylefontSize=documentgetElementByid('sel')value;
}
sel是select下拉列表的id,你这个option的值不对需要改下,改成存在的字体
通过for循环判断每个选项,一旦满足条件则设置其selected属性为true即可,关键代码:
下面给出实例演示:
1、HTML结构
2、javascript代码
3、设置效果:如图设置选中项为2,点击按钮后“赵云”即被选中。
扩展资料:
selected 定义和用法
selected 属性规定在页面加载时预先选定该选项。
被预选的选项会显示在下拉列表最前面的位置。
也可以在页面加载后通过 JavaScript 设置 selected 属性。
参考资料:
以上就是关于jquery multiselect下拉列表复选框动态怎么动态添加option并赋值全部的内容,包括:jquery multiselect下拉列表复选框动态怎么动态添加option并赋值、JS怎么生成动态关联option、如何让select标签动态加载数据库的值到option列表中呢等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)