我有三个链式select
元素。第一个是PHP填充MySQL查询和获取对象。第二个是根据第一次选择填充change
事件。请参阅以下代码:
$('.form-horizontal').on('change', '#proyectos', function(){
var id = $('#proyectos').val();
var request = $.ajax({
type: 'GET',
url: "{{ path('centros') }}",
dataType:'json',
data: 'id=' + id,
success: function(data) {
var html = "";
$.each(data, function(index, value){
html += '<option value="'+ index + '">' + value + '</option>';
$("#centros").html(html);
});
},
error: function() {
request.abort();
}
});
});
第三个是根据第二个change
值填充的,如下所示:
$('.form-horizontal').on('change', '#centros', function(){
var id = $('#centros').val();
var request = $.ajax({
type: 'GET',
url: "{{ path('unidades') }}",
dataType:'json',
data: 'id=' + id,
success: function(data) {
var html = "";
$.each(data, function(index, value){
html += '<option value="'+ index + '">' + value + '</option>';
$("#unidades").html(html);
});
},
error: function() {
request.abort();
}
});
});
如果第一个和第二个有多个值,我的代码可以正常工作,但是如果第一个select只有一个option
那么我的代码就会停止工作,因为永远不会执行change
事件。我如何在我的代码上修复此问题?
答案 0 :(得分:0)
你可以像这样在ajax的成功事件上触发事件:
if(data.length == 1) $(element).change()
答案 1 :(得分:0)
按照@Steve建议我稍微更改了我的代码,现在它可以工作了,这是解决方案:
$(function(){
$('.form-horizontal').on('change', '#proyectos', function(){
var id = $('#proyectos').val();
var request = $.ajax({
type: 'GET',
url: "{{ path('centros') }}",
dataType:'json',
data: 'id=' + id,
success: function(data) {
var html = "<option>---Seleccione una opción---</option>";
$.each(data, function(index, value){
html += '<option value="'+ index + '">' + value + '</option>';
$("#centros").html(html);
});
},
error: function() {
request.abort();
}
});
});
$('.form-horizontal').on('change', '#centros', function(){
var id = $('#centros').val();
var request = $.ajax({
type: 'GET',
url: "{{ path('unidades') }}",
dataType:'json',
data: 'id=' + id,
success: function(data) {
var html = "<option>---Seleccione una opción---</option>";
$.each(data, function(index, value){
html += '<option value="'+ index + '">' + value + '</option>';
$("#unidades").html(html);
});
},
error: function() {
request.abort();
}
});
});
});