用了click事件,点击后虽然能读出数据库的数据,但是在ie下就直接把下拉框收上去了,无法选择,而在chrome下可以选择,但是点击某个option的时候貌似又触发了一次click事件,导致所选的option被刷新成默认的了。求高手给个解决方案
希望依然能用jQuery、ajax实现
jQuery的ajax代码是这样写的:
$("#condition1").change(function(event){
$.ajax({
url:getRootPath()+"/df/data_append/select_condition1.do",
data:{condition:condition_name},
type:"POST",
dataType:"json",
timeout:5000,
success:function(json){
var select_option;
$.each(json.selected_option_value,function(i, item){
select_option = item;
});
var options_str = "";
$("#condition1").html("");
$.each(json.options,function(i, item){
options_str += "<option value=\"" + item.value + "\" >" + item.label + "</option>";
});
$("#condition1").append(options_str);
},
error:function(xhr, status){
alert("error");
}
})});
其中#condition1就是select的id
9 个解决方案
#1
不明白你的意思,change事件一概是下拉框选定的内容变更了才执行,开始选的是a,后面选择的是b,这时候执行change事件
#2
我也看不明白你想干什么,想干级联菜单么,级联菜单的话直接用change时间就行了,每次都不同这个还会第一次听说
#3
不要用select 用eaayui里有的组件,好像叫combox,看看API其用法
#4
建议页面加载时,用getJSON方法取出数据 append到select里
#5
#6
有一个很坑的方法,url一样就不重新加载
#7
使用$().load,而不是$.ajax
#8
$(select).blur();
// Force the dropdown to open:
// http://*.com/questions/10453393/how-to-open-the-select-input-using-jquery
var e = document.createEvent("MouseEvents");
e.initMouseEvent("mousedown", true, true, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);
select.dispatchEvent(e);
当时google浏览器时,使用这个就可以了
// Force the dropdown to open:
// http://*.com/questions/10453393/how-to-open-the-select-input-using-jquery
var e = document.createEvent("MouseEvents");
e.initMouseEvent("mousedown", true, true, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);
select.dispatchEvent(e);
当时google浏览器时,使用这个就可以了
#9
刚好也遇到这个问题了
原因是在选择第一次ajax获取的下拉选项时,又会触发下一次ajax请求
用一个很简单的手段解决了:
另外建立一个隐藏的文本框,初始值为0 ,第一次ajax请求成功后改变这个文本框的值为1
然后修改具体的ajax方法,只有前面建立的文本框值为0时继续执行,否则直接跳出
原因是在选择第一次ajax获取的下拉选项时,又会触发下一次ajax请求
用一个很简单的手段解决了:
另外建立一个隐藏的文本框,初始值为0 ,第一次ajax请求成功后改变这个文本框的值为1
然后修改具体的ajax方法,只有前面建立的文本框值为0时继续执行,否则直接跳出
#1
不明白你的意思,change事件一概是下拉框选定的内容变更了才执行,开始选的是a,后面选择的是b,这时候执行change事件
#2
我也看不明白你想干什么,想干级联菜单么,级联菜单的话直接用change时间就行了,每次都不同这个还会第一次听说
#3
不要用select 用eaayui里有的组件,好像叫combox,看看API其用法
#4
建议页面加载时,用getJSON方法取出数据 append到select里
#5
#6
有一个很坑的方法,url一样就不重新加载
#7
使用$().load,而不是$.ajax
#8
$(select).blur();
// Force the dropdown to open:
// http://*.com/questions/10453393/how-to-open-the-select-input-using-jquery
var e = document.createEvent("MouseEvents");
e.initMouseEvent("mousedown", true, true, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);
select.dispatchEvent(e);
当时google浏览器时,使用这个就可以了
// Force the dropdown to open:
// http://*.com/questions/10453393/how-to-open-the-select-input-using-jquery
var e = document.createEvent("MouseEvents");
e.initMouseEvent("mousedown", true, true, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);
select.dispatchEvent(e);
当时google浏览器时,使用这个就可以了
#9
刚好也遇到这个问题了
原因是在选择第一次ajax获取的下拉选项时,又会触发下一次ajax请求
用一个很简单的手段解决了:
另外建立一个隐藏的文本框,初始值为0 ,第一次ajax请求成功后改变这个文本框的值为1
然后修改具体的ajax方法,只有前面建立的文本框值为0时继续执行,否则直接跳出
原因是在选择第一次ajax获取的下拉选项时,又会触发下一次ajax请求
用一个很简单的手段解决了:
另外建立一个隐藏的文本框,初始值为0 ,第一次ajax请求成功后改变这个文本框的值为1
然后修改具体的ajax方法,只有前面建立的文本框值为0时继续执行,否则直接跳出