2016-11-28 42 views
1

我在我的表單中使用select2,並且使用jQuery,我試圖爲它設置一個默認值;然而,無論我嘗試沒有工作。首先,這裏是我的html格式:無法用jQuery覆蓋Select2值

<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") 
} 

我在控制檯中沒有錯誤。我錯過了什麼/做錯了什麼?

+0

你得到 「空」 當您嘗試設置它像'''jQuery的後讀'''的jQuery( '#itemSelect')'''( '#itemSelect').val(theValueToBeSet).trigger(「change」)'''? – rakaz

回答

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"); 
     }); 
    } 
+0

我也試過,但忘了把它添加到我的問題。我現在添加了它。這也不起作用。我可以請你刪除答案嗎? – senty

+0

再次更新我的代碼檢查。 –

+0

'jQuery('#itemSelect').val(theValueToBeSet).trigger(「change」)'在我的結尾不起作用://它必須是別的東西 – senty

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函數,我必須添加觸發器。

+0

在你的答案中提供你的代碼,而不僅僅是一個鏈接。 – Mistalis

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") 
}