来自mysql的jquery下拉列表基于之前的选择
编辑2似乎这是一个CSS类的问题。
编辑奇怪的是,它不是在私人网站的公共方面工作。 它必须是css或与另一个插件冲突。
让我先说我的jQuery经验非常少,这是我第一次涉足ajax。
我想要做的是根据前一个下拉列表的选择动态填充下拉数据。
我有html看起来像这样
Team Member Supervisor Manager Please Select Employee Role
理念是,当选择员工角色或类型时,下面的字段会填充所有在食物链上方的经理。
我有一个用php编写的MYSQL选择字符串,它使用json_encode
输出一些json,输出就是
[{"id":"2","first_name":"John","last_name":"Doe"}]
这基本上只是所有用户的数组,它们的名称和ID将在数组中显示。
这是棘手的部分,ajax。 我找到了我修改过的这个教程
// attach a change handler to the form $("select#employee_type").change(function(){ //get the mininimum employee level var input = $("select#employee_type").val(); //get the callback url var ajax_url = "/admin/employee/get_json/"+input; $.ajax({ url:ajax_url, data:{ url:escape(ajax_url) }, dataType:"json", success:function(data){ var select = $('#manager_name'); var options = select.attr('options'); $('option', select).remove(); $.each(data, function(index, array) { options[options.length] = new Option(array['first_name']+ " "+array['last_name'],array['id']); }) }, error:function(xhr,err,e){ alert( "Error: " + err ); } }); // $.ajax() return false; }); // .submit()*/
这大约占78%。 它添加了正确的选项和价值。 失败的地方是,如果我有$('option', select).remove();
(这是确保每次字段更改时都不会添加vaules的nessarry)当我尝试单击它时,该字段将被删除。 我也认为删除所选选项(请选择…)会很不错。
对此的任何帮助都会很棒!
我建议使用.empty()而不是.remove(),因为你实际上只删除该元素的子元素而不是元素本身。
success:function(data){ var select = $('#manager_name'); select.empty(); $.each(data, function(index, array) { select.append(new Option(array['first_name']+ " "+array['last_name'],array['id'])); }) },
我个人没有使用新的Option方法,所以我无法validation它是否正确。
一个有效的解决方案应该是http://jsfiddle.net/HffLg/10/