[英]Can't overwrite Select2 value with jQuery
我在表单中使用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")
}
我在控制台中没有任何错误。 我想念/做错了什么?
检查以下代码,您必须触发:
$("#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");
});
}
我希望这是您要寻找的。
以下是用于更改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函数,我必须添加触发器。
很难说出来,因为这里的变量,参数和函数名称并不好...
首先,不清楚参数id
代表什么。 我怀疑没有html,因为jQuery('#item-'+ id)
选择的ID为'#item-'+ id
的DOM元素,在您的示例中找不到。
其次,假设jQuery('#item-'+ id)
正在从select中选择任意选项DOM元素,我认为使用$item.id
和$item.name
时您会感到$item.name
。 变量theValueToBeSet
设置为$item.name
,但是您稍后将使用它来设置select的值 $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")
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.