jQuery ajax 不刷新页面动态获取select的option

页面上有一个select,我希望实现每当我点击这个select就用ajax从后台读取数据库的值作为option,显示成下拉列表,option的数量和值都不固定,需要每次选... 页面上有一个select,我希望实现每当我点击这个select就用ajax从后台读取数据库的值作为option,显示成下拉列表,option的数量和值都不固定,需要每次选择时都从数据库读而不刷新整个页面,只想刷新select的下拉列表。
用了click事件,点击后虽然能读出数据库的数据,但是在ie下就直接把下拉框收上去了,无法选择,而在chrome下可以选择,但是点击某个option的时候貌似又触发了一次click事件,导致所选的option被刷新成默认的了。求高手给个解决方案
希望依然能用jQuery、ajax实现
展开
 我来答
wode5130
推荐于2016-02-13 · TA获得超过638个赞
知道小有建树答主
回答量:423
采纳率:100%
帮助的人:335万
展开全部
首先说下解决方案:
由于select的点击就显示下拉列表时控件本身的特性,无法取消(我尝试过阻止默认事件,结果没有反应),所以最好的方法我觉得就是模拟select,就是说不用select标签,自己写一组html替换select,这方面成熟的jquery插件也不少。这样做便于控制下拉列表何时显示隐藏,不用担心click的问题。而且可以避免select本身的一些缺陷达到跨浏览器的目的
百度网友a19d193
推荐于2018-05-06 · TA获得超过3446个赞
知道大有可为答主
回答量:1464
采纳率:100%
帮助的人:1446万
展开全部
你试试这个代码
resetSelectElement = function(target, options, value, fireChange) {
target = $(target);
target.empty();
for ( var i = 0; i < options.length; i++) {
target.append('<option value="' + options[i].value + '">' + options[i].text + '</option>');
}
if (value === undefined || value === false || value.length < 1) {
value = '';
}
target.val(value);
if (fireChange) {
target.change();
}
};
这个要求服务器端返回的数据类似[{value:5, text: 'text'}, {value: 8, text: 'text 2'}],用法示例
<select name='demo' onchange='demoChange(this)'></select>
<select id="nextSel"></select>
function demoChange(obj) {
$.post('your.url', {id: obj.value}, function(response) {

resetSelectElement($('#nextSel'), response);
});

}
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
精神小伙喵
2013-05-17 · TA获得超过684个赞
知道小有建树答主
回答量:746
采纳率:50%
帮助的人:728万
展开全部
最好只在窗口加载完毕后加载这些数据,否则每点一次就加载一次,没这个必要
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
qudedong28
2013-05-17 · 超过27用户采纳过TA的回答
知道答主
回答量:95
采纳率:0%
帮助的人:73万
展开全部
不用click事件,换成change事件试试看
前段时间刚实现此功能,就是用的change事件
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式