代码之家  ›  专栏  ›  技术社区  ›  Alexander Dischberg

使用数组或字符串设置选定的语义UI下拉列表

  •  0
  • Alexander Dischberg  · 技术社区  · 7 年前

    这段代码就是我得到的,通过手动设置set selected 1 by 1,它就可以工作了。 但我想通过编程的方式来实现它,就像传递一个字符串或一个包含 ["2", "3", "4"] set selected: array 或者以任何其他方式插入从ajax接收到的数组。

    $('.ui.dropdown').dropdown('set selected', ["1", "2"]);
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
    <link href="https://cdnjs.cloudflare.com/ajax/libs/semantic-ui/2.3.0/semantic.min.css" rel="stylesheet"/>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/semantic-ui/2.3.0/semantic.min.js"></script>
    <select multiple class="ui dropdown" name="event">
        <option value="">Select Service</option>
        <option value="1">opt 1</option>
        <option value="2">opt 2</option>
        <option value="3">opt 3</option>
        <option value="4">opt 4</option>
        <option value="5">opt 5</option>
    </select>

    我还尝试使用远程内容,如下所示,但 selected 似乎不起作用。

    json输出:

    "success": true,
    "results": [
      {
        "name"  : "Choice 1",
        "value" : "value1",
        "selected" : true
       }
    

    阅读远程内容:

     $('.ui.dropdown.state').dropdown({
      apiSettings: {
         url: '//api.semantic-ui.com/tags/{query}'
      },
       filterRemoteData: false
    }); `
    
    1 回复  |  直到 7 年前
        1
  •  1
  •   Alexander Dischberg    7 年前

    解决了它。我的错误是在ajax onload方法之外调用了数组。通过调用 set selected 内循环内 onload 打电话解决了。 selectedArray应包含目标选项的值。

    for(var i=0, len=selectedArray.length; i <len; i++){
       $('.ui.dropdown.state').dropdown('set selected', selectedArray[i]);
    }