如何根据我从ajax获得的json在select上添加禁用的select属性

时间:2016-08-15 07:19:30

标签: javascript jquery json ajax selectize.js

我有一个物化选择框,如

<select id="create-event-session-name" name="session_name" class="validate">
    <option value="" disabled selected>Select Session</option>
    <option value="measurements">Measurements</option>
    <option value="bath">Bath</option>
    <option value="post_partum">Post Partum</option>
    <option value="nicu">NICU</option>
    <option value="mics">Mics.</option>
</select>

我有来自ajax调用的数据,其中我有会话名称。我想在选项中添加已禁用选定属性,如果该值存在于我拥有的JSON

$('#create-event-user').on('change', function() {
  var userId = $('#create-event-user').val();
  var sessionStr = '<option value=""    disabled selected>Select User</option>';
  $.ajax({
    type: 'GET',
    url: "/get-user-sessions/" + userId,
    success: function(data) {
      $.each(data, function(index, item) {
        console.info(item.session_name);
        var mapped = $("select#create-event-session-name option").map(function() {
          return $(this).val();
        }).get();
        console.info(mapped);
        //console.info($('#create-event-session-name option[value = "''"]'));
      });
    },
    error: function(jqXHR, textStatus, errorThrown) {

    }
  });
}); 

2 个答案:

答案 0 :(得分:0)

选择具有相同值的选项,如果存在这样的选项,则设置其slelected和disabled属性:

  Ptr<TrafficControlLayer> tc = node->GetObject<TrafficControlLayer> ();
  if (tc && DynamicCast<LoopbackNetDevice> (device) == 0 && tc->GetRootQueueDiscOnDevice (device) == 0)
    {
      NS_LOG_LOGIC ("Installing default traffic control configuration");
      TrafficControlHelper tcHelper = TrafficControlHelper::Default ();
      tcHelper.Install (device);
    }

答案 1 :(得分:0)

您只需检查下拉列表是否包含值添加disabled属性

$("#create-event-user option[value='"+item.session_name+"']").attr({"disabled":true,"selected":"selected"});

完整代码

$.ajax({
    type: 'GET',
    url: "/get-user-sessions/" + userId,
    success: function(data) {
      $.each(data, function(index, item) {
        console.info(item.session_name);
        var mapped = $("select#create-event-session-name option").map(function() {
          return $(this).val();
        }).get();
        console.info(mapped);
        $("#create-event-user option[value='"+item.session_name+"']").attr({"disabled":true,"selected":"selected"});
      });
    },
    error: function(jqXHR, textStatus, errorThrown) {

    }
  });