Javascript 在刷新时进行选择刷新';s在更改时打开-chrome
这在Firefox上可以正常工作,但在Chrome上不能 小提琴示例:Javascript 在刷新时进行选择刷新';s在更改时打开-chrome,javascript,jquery,html,google-chrome,Javascript,Jquery,Html,Google Chrome,这在Firefox上可以正常工作,但在Chrome上不能 小提琴示例: setTimeout(函数(){ $('#s1')。追加(“新”); },2000); 如果选择框在超时结束时打开,则在您关闭并重新打开选择框之前,列表不会更新。有没有办法让它在Chrome上打开时更新选择列表?(我猜IE上太理想了,尽管这不是必需的) 我可以使用replaceWith强制取消选择它,但这会产生一种丑陋的效果,我更希望它只是更改列表并保持打开状态 实际情况是,我的选择框正在等待ajax调用,用户很容易在aj
setTimeout(函数(){
$('#s1')。追加(“新”);
},2000);
如果选择框在超时结束时打开,则在您关闭并重新打开选择框之前,列表不会更新。有没有办法让它在Chrome上打开时更新选择列表?(我猜IE上太理想了,尽管这不是必需的)
我可以使用replaceWith
强制取消选择它,但这会产生一种丑陋的效果,我更希望它只是更改列表并保持打开状态
实际情况是,我的选择框正在等待ajax调用,用户很容易在ajax完成之前打开选择框。这有两个部分,更新下拉框时必须模糊下拉框,然后重新打开它。去掉焦点很容易,重新打开列表却不容易。我用这个技巧重新打开它
var showDropdown = function (element) {
var event;
event = document.createEvent('MouseEvents');
event.initMouseEvent('mousedown', true, true, window);
element.dispatchEvent(event);
};
setTimeout(function(){
var focused = false;
if($('#s1').is(":focus")) {
$('#s1').blur();
focused = true;
}
$('#s1').append("<option>NEW</option>");
if(focused) {
showDropdown($('#s1')[0]);
}
},4000);
var showDropdown=函数(元素){
var事件;
event=document.createEvent('MouseEvents');
initMouseEvent('mousedown',true,true,window);
元素。dispatchEvent(事件);
};
setTimeout(函数(){
var=false;
如果($('s1')。是(“:焦点”)){
$('#s1').blur();
专注=正确;
}
$('#s1')。追加(“新”);
如果(聚焦){
下拉列表($('s1')[0]);
}
},4000);
这是提琴:在Chrome中它似乎对我有效……你能澄清你的问题是什么吗?@General_Twyckenham如果你运行它并立即打开select,你会在2秒钟后得到“NEW”条目?它在Chrome中也对我有效。你对什么版本的chrome和什么操作系统有问题?哦,这是必要的澄清。你想在列表处于打开/活动状态时更新它。@General_Twyckenham是的,我会编辑以使其更清晰这实际上在Chrome中有效,但在Firefox中不起作用,因为模糊在两者中都起作用,但showDropdown仅在Chrome中起作用。嗯,默认行为在FF上起作用,所以我只需检查它是否为FF。这很有效。不太理想,但由于FF中存在所有函数(尽管它们会抛出错误),我不能只检查它们是否存在。评论说这仍然有效,您是一个救生员!
var showDropdown = function (element) {
var event;
event = document.createEvent('MouseEvents');
event.initMouseEvent('mousedown', true, true, window);
element.dispatchEvent(event);
};
setTimeout(function(){
var focused = false;
if($('#s1').is(":focus")) {
$('#s1').blur();
focused = true;
}
$('#s1').append("<option>NEW</option>");
if(focused) {
showDropdown($('#s1')[0]);
}
},4000);