无法用jQuery覆盖Select2值

时间:2016-11-28 06:59:14

标签: javascript jquery select select2

我在我的表单中使用select2,并且使用jQuery,我正在尝试为其设置默认值;但无论我尝试什么都行不通。首先,这是我的html表单:

<div class="form-group>
   <div class="col-xs-12">
      <div class="form-material">
          <label for="item" style="font-size: 14px; margin-bottom: 5px">Name:</label>
          <select id="itemSelect" class="js-select2" name="item" data-placeholder="Select Item..">
               <option></option>
               @foreach ($establishments as $establishment)
                    <option value="{{$item->id}}">{{ $item->name }}</option>
               @endforeach
         </select>         
     </div>
  </div>
</div>

然后,在我的jquery中,我试图在其上写一个默认值。

function somethingClick(id) {
   var theValueToBeSet = jQuery('#item-'+ id).html();  // logs "TestData"

   // First I tried;
   jQuery('#itemSelect').val(theValueToBeSet);

   // Secondly:
   jQuery('#itemSelect').select2('val', theValueToBeSet);

  // Thirdly:
   jQuery('#itemSelect').val(theValueToBeSet).trigger("change")
}

我在控制台中没有错误。我错过了什么/做错了什么?

3 个答案:

答案 0 :(得分:0)

检查以下代码,您必须触发:

 $("#itemSelect").val(theValueToBeSet).trigger("change");

Hope this will help you !!

以下代码正常运行:

("#SelectId").select2({
        placeholder: "-Select Options-"
    });
    if ($('#FirstListId').val() != 0) {
        var olddata = $("#SelectId").val();
        $.getJSON('/Home/GetSelectList/' + $('#FirstListId').val(), function (data) {
            var items;
            $.each(data, function (i, secondList) {
                items += "<option value='" + secondList.Value + "'>" + secondList.Text + "</option>";
            });
            $('#SelectId').html(items);
            $("#SelectId").val(olddata).trigger("change");
        });
    }

答案 1 :(得分:0)

我希望这是你正在寻找的。

以下是更改select值的示例链接。

HTML

<select class="test">
    <option value="">-</option>
    <option value="1">Test 1</option>
    <option value="2">Test 2</option>
    <option value="3">Test 3</option>
</select>

的Javascript

$(".test option[value=3]").prop("selected","selected").trigger("change");

https://jsfiddle.net/synz/7yc96mo5/1/

尝试更改值。 由于select2功能,我必须添加触发器。

答案 2 :(得分:0)

这有点难以分辨,因为这里的变量,参数和函数名称都不是很好......

首先,不清楚参数id代表什么。我怀疑我们没有看到html因为jQuery('#item-'+ id)正在选择ID为'#item-'+ id的DOM元素,我在您的示例中找不到。

其次,假设jQuery('#item-'+ id)正在从select中选择一个任意选项DOM元素,我认为在使用$item.id$item.name时你会变得混乱。变量theValueToBeSet设置为$item.name,但您稍后会使用它来设置选择的,即$item.id

尝试修改你的js到以下

function somethingClick(id) {
   var theValueToBeSet = jQuery('#item-'+ id).attr('value');  // <- This line changed

   // First I tried;
   jQuery('#itemSelect').val(theValueToBeSet);

   // Secondly:
   jQuery('#itemSelect').select2('val', theValueToBeSet);

  // Thirdly:
   jQuery('#itemSelect').val(theValueToBeSet).trigger("change")
}