JQuery设置选择为选中 - 不是不更新

TH1*_*981 2 forms jquery

我之前已经完成了这一百次,但在这一次实例中,我无法让它发挥作用.

我有一张表格.您可以从客户下拉列表中进行选择,并更新表单中的其余字段.

simples.

我使用ajax调用并将表单数据作为json对象返回,然后使用以下jquery更新屏幕上的表单.设置字段以name匹配输出定义(在下面作为k).

    $.each(out, function(k,v){
        if($('form input[name="'+k+'"]').attr('type') == 'text'){
            $('form input[name="'+k+'"]').val(v);
        }else if($('form input[name="'+k+'"]').attr('type') == 'hidden'){
            $('form input[name="'+k+'"]').val(v);
            $('form .'+k).text(v);
        }else if($('form input[name="'+k+'"]').attr('type') == 'checkbox'){
            if(v == '1') {
                $('form input[name="'+k+'"]').attr('checked', true);
            }else{
                $('form input[name="'+k+'"]').attr('checked', false);
            }
        }else
        $('form select[name="'+k+'"] option[value="'+v+'"]').attr('selected', true);

        $('form input[name="old_client_name"]').val(out.client_name);
    });
Run Code Online (Sandbox Code Playgroud)

当我使用inspect元素时,我实际上可以在一个选择字段中看到正确的选项已被赋予selected="selected"值,但是用户的视图没有更新选择框以反映这一点,因此用户无法将其视为已选中并且在处理表单时,它的行为类似于尚未设置的值.

我正在使用jq 1.9.1,但最近才在这个特定项目上升级到了这个.

有什么建议?

BBa*_*agi 5

尝试:

    $('form select[name="'+k+'"] option[value="'+v+'"]').attr('selected', 'selected');
Run Code Online (Sandbox Code Playgroud)

要么:

    $('form select[name="'+k+'"] option[value="'+v+'"]').prop('selected', 'selected');
Run Code Online (Sandbox Code Playgroud)

为清楚起见,您应始终设置selected ="selected",而不仅仅是true.


Mar*_*eli 5

如果您使用某些插件,请参阅具体文档。例子:

对于 select2,使用:

$('#myselect').trigger('change');
Run Code Online (Sandbox Code Playgroud)

对于选择菜单,请使用:

$('#myselect').selectmenu('refresh', true);
Run Code Online (Sandbox Code Playgroud)