我正在尝试使用select2
和 codeigniter 的form_validation()
重新填充我的表单,但我无法让它工作。我的 select2 插件正在使用 json 类型数据。这是我的选择2HTML
代码:
<select name="secondary_icdx" id="multiple-secondary-icdx" class="form-control" data-url-source="<?php echo site_url('frontoffice/diagnose/code'); ?>"></select>
这是我的选择2javascript
代码:
var sourceDiagnose = $('#multiple-secondary-icdx').data('url-source');
$("#multiple-secondary-icdx").select2({
closeOnSelect: false,
placeholder: 'Select secondary diagnose if any...',
minimumInputLength: 3,
language: {
inputTooShort: function () {
return "Type min. 3 characters...";
},
noResults: function() {
return "Nothing found!"
},
searching: function() {
return "Searching…"
}
},
ajax: {
url: function (params, data) {
return sourceDiagnose + '/' + params.term;
},
dataType: 'json',
delay: 250,
processResults: function (response) {
return {
results: response,
pagination: {
more: (response.page * 30) < response.total_count
}
};
},
cache: true
}
});
我尝试在设置$_POST['secondary_icdx']
时if
语句,在 select 元素中如下所示:
<?php if ( isset($_POST['secondary_icdx']) ):
foreach ( $_POST['secondary_icdx'] AS $sec ):
?>
<option value="<?php echo $sec; ?>"><?php echo $sec; ?></option>
<?php endforeach; endif; ?>
。但没有运气!在表单验证时,有没有办法使用set_select()
或其他东西?我完全糊涂了。这里的任何帮助将不胜感激!提前谢谢你。
注意:icdx代码有超过22k的数据!
如果值已经保存,则只需要运行 foreach,其余部分将由 Select 2 本身完成。 请记住更新"选择 2"文件,并将"选择"框设置为"多个"。 我正在使用 CDN:
<link href="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.6-rc.0/css/select2.min.css" rel="stylesheet" />
<script src="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.6-rc.0/js/select2.min.js"></script>
这是我的代码:
<select class="form-control select2" id="health_type" name="health_type[]" multiple="multiple">
<option value="all">--Select Health Concern Type--</option>
<?php foreach ($health_type as $cat) :?>
<option value="<?=$cat['id'];?>" <?php if(!empty($health_arr) && in_array($cat['id'], $health_arr) ) echo 'selected'; ?> ><?=$cat['name'];?></option>
<?php endforeach; ?>
</select>
我的选择 2 初始化:
$('.select2').select2({
placeholder:"Select multiple variants"
});
$(document).ready(function() {
$('.select2').select2();
});