显示了 Select2 值,但实际上是空的
Select2 values are shown, but is actually empty
<div class="form-group">
<select class="form-control js-example-basic-multiple"
name="regular[]" id="regular" multiple="multiple" required>
<option value="History">History</option>
<option value="Political Science">Political Science
</option>
<option value="Economics">Economics</option>
<option value="Education">Education</option>
<option value="Philosophy">Philosophy</option>
<option value="Elective Assamese">Elective Assamese
</option>
<option value="Elective Hindi">Elective Hindi</option>
<option value="Arabic">Arabic</option>
<option value="Mathematics">Mathematics</option>
<option value="Linguistics">Linguistics</option>
</select>
</div>
这是我的 select2 输入。
$(document).ready(function () {
$('#regular').select2({
placeholder: 'Select any two from the options',
maximumSelectionLength: 2,
});
});
我已经在此处加载了 select2.js。我正在从 ajax 调用中获取数据。
options = data.regular.split(",");
这个option
有3个值,我想select数组中的前两个。
因此我的代码是..
option = [options[0],options[1]];
$("#regular").val(option).trigger('change');
现在选项显示在列表中。但是,如果我单击并从输入中 select,一切都会重置,我必须再次 select。如果不更改我要提交的任何内容,该字段将显示为必填项。
此处代码有效,因为来自服务器的值与选项元素的两个值相同
所以您的问题可能是选项字符串不存在
,而且它区分大小写,所以 "arabic" !== "Arabic" 阿拉伯语将不起作用
更改选项标签或更改 JSON 响应
中的值字符串
希望对您有所帮助
$(document).ready(function() {
mySelect = $('#regular').select2({
placeholder: 'Select any two from the options',
maximumSelectionLength: 2
});
options = 'Economics,Arabic,Education'.split(',');
option = [options[0],options[1]];
//simulate ajax using timeout
setTimeout(function() {
mySelect.val(option).trigger("change");
}, 1000);
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<link href="https://cdn.jsdelivr.net/npm/select2@4.0.13/dist/css/select2.min.css" rel="stylesheet" />
<script src="https://cdn.jsdelivr.net/npm/select2@4.0.13/dist/js/select2.min.js"></script>
<div class="form-group">
<select class="form-control js-example-basic-multiple" name="regular[]" id="regular" multiple="multiple" required>
<option value="History">History</option>
<option value="Political Science">Political Science
</option>
<option value="Economics">Economics</option>
<option value="Education">Education</option>
<option value="Philosophy">Philosophy</option>
<option value="Elective Assamese">Elective Assamese
</option>
<option value="Elective Hindi">Elective Hindi</option>
<option value="Arabic">Arabic</option>
<option value="Mathematics">Mathematics</option>
<option value="Linguistics">Linguistics</option>
</select>
</div>
<div class="form-group">
<select class="form-control js-example-basic-multiple"
name="regular[]" id="regular" multiple="multiple" required>
<option value="History">History</option>
<option value="Political Science">Political Science
</option>
<option value="Economics">Economics</option>
<option value="Education">Education</option>
<option value="Philosophy">Philosophy</option>
<option value="Elective Assamese">Elective Assamese
</option>
<option value="Elective Hindi">Elective Hindi</option>
<option value="Arabic">Arabic</option>
<option value="Mathematics">Mathematics</option>
<option value="Linguistics">Linguistics</option>
</select>
</div>
这是我的 select2 输入。
$(document).ready(function () {
$('#regular').select2({
placeholder: 'Select any two from the options',
maximumSelectionLength: 2,
});
});
我已经在此处加载了 select2.js。我正在从 ajax 调用中获取数据。
options = data.regular.split(",");
这个option
有3个值,我想select数组中的前两个。
因此我的代码是..
option = [options[0],options[1]];
$("#regular").val(option).trigger('change');
现在选项显示在列表中。但是,如果我单击并从输入中 select,一切都会重置,我必须再次 select。如果不更改我要提交的任何内容,该字段将显示为必填项。
此处代码有效,因为来自服务器的值与选项元素的两个值相同
所以您的问题可能是选项字符串不存在
,而且它区分大小写,所以 "arabic" !== "Arabic" 阿拉伯语将不起作用
更改选项标签或更改 JSON 响应
中的值字符串希望对您有所帮助
$(document).ready(function() {
mySelect = $('#regular').select2({
placeholder: 'Select any two from the options',
maximumSelectionLength: 2
});
options = 'Economics,Arabic,Education'.split(',');
option = [options[0],options[1]];
//simulate ajax using timeout
setTimeout(function() {
mySelect.val(option).trigger("change");
}, 1000);
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<link href="https://cdn.jsdelivr.net/npm/select2@4.0.13/dist/css/select2.min.css" rel="stylesheet" />
<script src="https://cdn.jsdelivr.net/npm/select2@4.0.13/dist/js/select2.min.js"></script>
<div class="form-group">
<select class="form-control js-example-basic-multiple" name="regular[]" id="regular" multiple="multiple" required>
<option value="History">History</option>
<option value="Political Science">Political Science
</option>
<option value="Economics">Economics</option>
<option value="Education">Education</option>
<option value="Philosophy">Philosophy</option>
<option value="Elective Assamese">Elective Assamese
</option>
<option value="Elective Hindi">Elective Hindi</option>
<option value="Arabic">Arabic</option>
<option value="Mathematics">Mathematics</option>
<option value="Linguistics">Linguistics</option>
</select>
</div>