我之前已经完成了这一百次,但在这一次实例中,我无法让它发挥作用.
我有一张表格.您可以从客户下拉列表中进行选择,并更新表单中的其余字段.
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,但最近才在这个特定项目上升级到了这个.
有什么建议?
尝试:
$('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.
如果您使用某些插件,请参阅具体文档。例子:
对于 select2,使用:
$('#myselect').trigger('change');
Run Code Online (Sandbox Code Playgroud)
对于选择菜单,请使用:
$('#myselect').selectmenu('refresh', true);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4624 次 |
| 最近记录: |