Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
jQuery下拉列表selected=在Safari中选择的不起作用_Jquery_Html_Drop Down Menu_Safari_Html Select - Fatal编程技术网

jQuery下拉列表selected=在Safari中选择的不起作用

jQuery下拉列表selected=在Safari中选择的不起作用,jquery,html,drop-down-menu,safari,html-select,Jquery,Html,Drop Down Menu,Safari,Html Select,我有一张有几个标签的订阅表。 您可以在此表单中前后单击 对于下拉列表,我使用jquery预先选择前面的选项,这样人们就不必在向后单击时重新回答这个特定问题 该脚本在Chrome和Firefox上运行良好,但在Safari上根本不起作用。 不知怎么的,我就是不能让它工作 你能看一下,告诉我我做错了什么吗 剧本: if (repeat_visit !== '') { $('#repeatVisit').find('option').each(function(){ if ($

我有一张有几个标签的订阅表。 您可以在此表单中前后单击

对于下拉列表,我使用jquery预先选择前面的选项,这样人们就不必在向后单击时重新回答这个特定问题

该脚本在Chrome和Firefox上运行良好,但在Safari上根本不起作用。 不知怎么的,我就是不能让它工作

你能看一下,告诉我我做错了什么吗

剧本:

if (repeat_visit !== '') {
    $('#repeatVisit').find('option').each(function(){
        if ($(this).val() === repeat_visit) {
            $(this).attr('selected','selected');
        }
    });
}
该属性设置为选项,因此看起来像: 对

我可以看到确实发生了这种情况,但在页面加载后添加所选属性时,Safari似乎不会更改页面。所以我需要触发这个变化事件

我找到了答案


您可以使用.prop'selected',true代替off attr'selected',selected'

我只是使用.prepend函数更改DOM元素,将所选选项添加到select中的第一个元素中

selectElement.children[i].setAttribute("selected", true);
selectElement.prepend(selectElement.children[i]);

在撰写本文时,以下功能适用于当前的Safari、Safari Mobile、Chrome、Edge和Firefox

这解决了.prop调用必须在.attr调用之前完成的问题,或者忽略整个事件,以及firefox中的重画问题

    function updateSelect(selectname, value){
        $('select[name="'+selectname+'"] option').prop('selected',false);
        $('select[name="'+selectname+'"] option').removeAttr('selected');
        $('select[name="'+selectname+'"] option[value="'+value+'"]').prop('selected',true);
        $('select[name="'+selectname+'"] option[value="'+value+'"]').attr('selected','selected');
        $('select[name="'+selectname+'"]').val(value).change();
    }

你能为同样的东西制作小提琴吗?你试过只用$'repeatVisit'。valrepeat\u visit;没有JSFIDLE,我可以尝试这样设置值,谢谢!否设置该值也不起作用。我认为它更多的是与Safari和HTML有关,而不是与jQuery有关。谢谢!这似乎解决了问题。事实上,chrome和firefox在.attr'selected',safari needs.prop'selected'方面仍然表现良好。这阻止了我在safari 11+safari中使用select2…:@,我曾经使用过这个选项,但问题是要明确地取消选择以前选择的选项。