按值获取选定的选项

时间:2016-12-29 08:36:41

标签: jquery select

首先,道歉你发现这与其他问题完全重复,但由于我已经尝试了大部分解决方案,但仍然停留在中间,那么这是我获得解决方案的最后选择。 我试过这样的例子:

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');
  }
});

1 个答案:

答案 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举例说明了如何执行此操作。