根据数据库中的数据动态生成select,然后再根据select动态生成option。
我js实在太差了。搜了半天都搞不定。我的思路是:
1.在load页面时将select中的内容全部动态生成----但怎么实现在页面加载时load进来数据呢?以什么格式load以及怎样解析?
2.在选择select时,再根据事件动态生成option中的内容感觉不是很难,但时间很紧,怕搞不定了,拜托大家帮忙了!!
我js实在太差了。搜了半天都搞不定。我的思路是:
1.在load页面时将select中的内容全部动态生成----但怎么实现在页面加载时load进来数据呢?以什么格式load以及怎样解析?
2.在选择select时,再根据事件动态生成option中的内容感觉不是很难,但时间很紧,怕搞不定了,拜托大家帮忙了!!
不要用JS做,在Server端用Java做吧。
$("#div").append("<select id='select'></select>")
$.getJSON("selectUser.action",null,function(json){
$.each(json,function(i,data){
var id=data.id
var name=data.name;
$("#select").append("<option id='"+id+"'>"+name+"</option>")
})
})
})
<body>
<div id='div'></div>
<button id='button'>生成select</button>
</body>
------------------------------------------------------
selectUser.action:List<Users> list=usersDAO.findAll();
response.setContentType("text/html; charset=utf-8");
try {
PrintWriter out = response.getWriter();
JSONArray array=new JSONArray();
array.addAll(list,config);
out.print(array.toString());
out.flush();
out.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
})
response.setContentType("text/html; charset=utf-8");
try {
PrintWriter out = response.getWriter();
JSONArray array=new JSONArray();
array.addAll(list);
out.print(array.toString());
out.flush();
out.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
})
3.然后根据选择不同的option,在动态的在下面的select中显示这个部门中对应的用户
$("#div").append("<select id='select' onchange='change();'></select>")
$.getJSON("selectUser.action",null,function(json){
$.each(json,function(i,data){
var id=data.id
var name=data.name;
$("#select").append("<option id='"+id+"'>"+name+"</option>")
})
})
})change(){
var id=$("#select").val();
$.getJSON("selectUser2.action",{id:id},function(json){
$.each(json,function(i,data){
var id=data.id;
var name=data.name;
$("#你的另一个下拉框的id").append("<option value='"+id+"'>"+name+"</option>")
})
})
}
selectUser2.action:
int id=Integer.parseInt(request.getParameter("id"));
List<Users> list=usersDAO.findById(id);
response.setContentType("text/html; charset=utf-8");
try {
PrintWriter out = response.getWriter();
array.addAll(list);
out.print(array.toString());
out.flush();
out.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
$("#你的另一个下拉框的id").append("<option value='"+id+"'>"+name+"</option>")这句话为什么append不到select中呢?而且第一次发的代码也append不到select中,我需要自己先append一个option:$("#select").append("<select id='deptSelect' onchange='change();' style='width: 180px;'><option>请选择</option></select>")然后再append option才能append进去:$("#deptSelect").append("<option value='"+id+"'>"+name+"</option>")
至于option 可以是用 AJAX 来做,这样会给用户很好的体验!
$(function(){
$("#select").append("<select id='deptSelect' onchange='change();' style='width: 180px;'><option>请选择</option></select>")
$.getJSON("DeptServlet",null,function(json){
$.each(json,function(i,data){
var id=data.id
//alert("id :" + id);
var name=data.name;
//alert("name : " + name);
$("#deptSelect").append("<option value='"+id+"'>"+name+"</option>")
})
})
}); function change(){
var id=$("#deptSelect").val();
//alert(id);
$.getJSON("DeptServlet2",{id:id},function(json){
$.each(json,function(i,data){
var id=data.id;
var name=data.name;
//alert(id);
//alert(name);
$("#leftItem").append("<option value='"+id+"'>"+name+"</option>");
//$("<option value='"+id+"'>"+name+"</option>").appendTo("#leftItem");
})
})
}
</script>请选择部门:
<div id="select">
</div>
<br />
<div>
<select name="leftItem" style="width: 180px" size="10"
multiple="multiple">
<option>无</option>
</select><br/>
</div>
<input type="checkbox" value="">选择所有部门人员