在代码点火器中数据库中另一个选择框的更改事件时更改选择框的值
Changing value of selectbox on change event of another select box from database in codeigniter
我有一个视图文件作为
<select name="tournaments" id ="tournaments" class="form-control">
<?php foreach ($tournaments as $tournament): ?>
<option value="<?php echo $tournament->TournamentID ?>"><?php echo $tournament->TournamentName ?></option>
<?php endforeach ?>
</select>
一个脚本
<script type="text/javascript">
$(document).ready(function(){
var initial_target_html = '<option value="">Please select a Tournament...</option>'; //Initial prompt for target select
$('#matches').html(initial_target_html);
$("#tournaments").change(function(e){
e.preventDefault();
var data = ($("#tournaments").val());
$('#matches').html('<option value="">Loading...</option>');
$.ajax({
type:"POST",
dataType: 'json',
url:"<?php echo base_url('admin/dashboard/update_match_box') ?>",
data: {tournament:data},
success: function(data) {
}
});
});
});
</script>
控制器功能为
public function update_match_box()
{
$sql = "Some query"
$query = $this->db->query($sql);
$json= $query->result();
$this->output->set_content_type('application/json')
->set_output(json_encode($json));
}
控制器文件将返回多行,我需要在 ajax 的成功事件中捕获这些行并相应地更新第二个选择框,我应该怎么做?
你应该看看form_helper文件,里面有很多有用的函数来构建表单输入,你所要做的就是加载这个助手:在应用程序/配置/自动加载中.php转到"帮助程序"并添加帮助程序名称,如下所示:
$autoload['helper'] = array('form');
接下来,转到您的视图文件并更改以下内容:
<select name="tournaments" id ="tournaments" class="form-control">
<?php foreach ($tournaments as $tournament): ?>
<option value="<?php echo $tournament->TournamentID ?>"><?php echo $tournament->TournamentName ?></option>
<?php endforeach ?>
</select>
对此:
<?php
// $tournaments must me an array, use ->result_array() instead of ->result_object()
$tournaments = array_column($tournaments, 'TournamentName', 'TournamentID');
echo form_dropdown('tournaments', $tournaments, '', 'id="tournaments" class="form-control")
?>
对于成功回调函数,您可以使用 $.each 或仅 for 循环来提取每个元素并为选择输入创建选项:
$.ajax({
type:"POST",
dataType: 'json',
url:"<?php echo base_url('admin/dashboard/update_match_box') ?>",
data: {tournament:data},
success: function(data) {
$('select#secondSelect').html('');
$.each(data, function(item) {
$("<option />").val(item.id)
.text(item.name)
.appendTo($('select#secondSelect'));
});
}
});
相关文章:
- 取消拖动&选择事件
- 选择同一文件时未触发HTML输入文件选择事件
- jQuery UI 选项卡取消选择事件或在选择时保存上一个选项卡
- 收听单选按钮取消选择事件而不知道按钮's上下文(骨干视图)
- 如何使用show hint插件在CodeMirror中订阅选择事件
- 为什么jQuery选择事件监听器会多次触发
- typeahead选择事件(jQuery)的动态绑定
- 在选择事件上引导日期时间选取器
- 从嵌套函数中选择事件目标
- 如何在 LI 上触发“选择”事件,由其 ID 标识
- 在动态创建的 DHTMLX 网格上附加行选择事件
- 如何在jquery中传递文件选择事件
- 如何检测单选按钮取消选择事件
- 从下拉菜单中选择事件 - 仅限 Javascript
- 无法检测加载时的选择/下拉列表选择事件
- 从下拉菜单中选择事件后的选项
- jQuery 选项取消选择事件
- 选择事件并将其应用于动态元素
- HTML 文件输入框不会触发文件选择事件并在更改事件 - angularJS 中警告
- jQuery - jquery 自动完成选择事件后的文本字段值更改