首先,道歉你发现这与其他问题完全重复,但由于我已经尝试了大部分解决方案,但仍然停留在中间,那么这是我获得解决方案的最后选择。 我试过这样的例子:
var user_dept = val[0].user_dept;
$('#user_dept option:selected').attr('value', user_dept);
和
var user_dept = val[0].user_dept;
$('#user_dept option[value="'+user_dept+'"]').attr('selected', true);
以及此:
$('#user_dept').append($('<option>',{
value: val[0].user_dept,
}));
但无法解决问题。仅供参考,我在jQuery中的if语句中声明了所有这些代码。如果可能的话,希望得到jquery的答案,因为我正在使用jquery来完成我的工作。
编辑:
正如我在下面的这些评论中提到的,我得到了这个函数生成的选择选项,
function UserDept()
{
$.getJSON('user_management_lib.php?mode=getDepartmentList', function(data){
var list = [];
$.each(data, function(index, value){
list += '<option value="'+value['department_id']+'">'+value['department']+'</option>'
});
$('#user_dept').html(list);
});
}
但是对于选择的选项,我需要通过不同表格中与user_dept
列相等的值来完成此操作,这与上面的函数完全无关。由于我使用jQuery和数组,我将在$('#user_dept').val(val[0].user_dept);
中声明它。如有必要,我会澄清。很抱歉给您带来不便。
于2016年12月30日编辑: 下面的代码是使用ajax的回调函数,其中也包含此问题。所以,由于我正在玩这个来解决这个问题,所以它还不完整。
$.ajax({
cache: false,
url: 'ldap_lib.php',
data:'mode=findLDAPServerInfo&ldapid=<?php echo $target_lid; ?>',
type:'POST',
dataType:'json',
success: function(val){
UserDept();
UserRole();
GlobalDept();
$('#mode').val('editLDAPServer');
$('#l_name').val(val[0].l_name);
$('#l_desc').val(val[0].l_desc);
$('#l_ip1').val(val[0].l_ip1);
$('#l_port1').val(val[0].l_port1);
$('#l_ip2').val(val[0].l_ip2);
$('#l_port2').val(val[0].l_port2);
$('#l_domainname').val(val[0].l_domain);
$('#l_loginname').val(val[0].l_loginname);
$('#l_loginpwd').val(val[0].l_loginpwd);
$('#l_mobile').val(val[0].l_mobile);
$('#l_basedn').val(val[0].l_basedn);
$('#l_filter').val(val[0].l_filter);
$('#l_type').val(val[0].l_type);
$('#l_loginmode').val(val[0].l_loginmode);
$('#l_scope').val(val[0].l_scope);
$('#sync_frequency').val(val[0].sync_frequency);
$('#sync_time').val(val[0].sync_hour);
if(val[0].sync_ul == 't'){
$('#l_sync_ul').prop('checked', true);
$('#tip_ul_dept').attr('style','display:block');
var user_dept = val[0].user_dept;
var user_role = val[0].user_role;
//$('#user_dept option[value="'+user_dept+'"]').attr('selected', true);
//$('#user_role option[value="'+user_role+'"]').attr('selected', true);
//$('#user_dept option:selected').attr('value', user_dept);
console.log($("#user_dept option"));
} else{
$('#l_sync_ul').prop('checked', false);
$('#tip_ul_dept').attr('style','display:none');
}
if(val[0].sync_gab == 't'){
$('#l_sync_gab').prop('checked', true);
$('#tip_gab_dept').attr('style','display:block');
// $('#gab_dept').val(val[0].gab_dept);
} else{
$('#l_sync_gab').prop('checked', false);
$('#tip_gab_dept').attr('style','display:none');
}
//$('#gab_dept').val(val[0].gab_dept);
$('#user_dept').val(val[0].user_dept);
},
error: function(){
alert('Failed To Retrieve Server');
}
});
答案 0 :(得分:1)
如果您只是想获取select元素的值,即属于select元素的当前所选选项元素的值,则可以使用jQuery&#39; .val()
函数:{ {1}}。
如果您尝试获取具有给定值的选项元素(如帖子标题所示),请使用$('#user_dept').val()
。
以上假设$('#user_dept option(value="' + val + '")')
是类似字符串/字符串的值 - 您在代码示例中使用了val
,表示val[0]
是一个数组。如果是这种情况,请使用val
。
修改强> 您正在尝试在创建选择选项之前设置select元素的值(它们是从JSON请求异步生成的)。
确保在执行此操作之前已生成选项 - 我已经updated your JSFiddle举例说明了如何执行此操作。