查看以下示例:
<select id="connection" onchange="load_databases_of_this_connection();"></select>
<select id="database" onchange="load_tables_of_this_database();"></select>
<select id="table" onchange="load_columns_of_this_table();"></select>
<input id="fieldcode" type="text"/>
<input id="fieldcolor" type="text"/>
<script type="text/javascript" language="javascript">
$('#connection').change();
setTimeout("x()",2000 ); // select database and load tables
function x() {
$('#database').val( 'main_database' );
$('#database').change();
setTimeout("t()",2000 ); // select table and load columns
}
function t() {
$('#table').val( 'payments' );
$('#table').change();
setTimeout("a()",2000 ); // select columns
}
function a() {
$('#fieldcode').val( 'code' );
$('#fieldcolor').val( 'status' );
}
</script>
此代码有效,但我不喜欢它。我想要做的是随后加载值,当“更改事件”结束(成功或完成)然后调用下一个,例如,如果我执行以下示例而没有setTimeout这不起作用:
<script type="text/javascript" language="javascript">
$('#connection').change();
$('#database').val( 'main_database' );
$('#database').change();
$('#table').val( 'payments' );
$('#table').change();
$('#fieldcode').val( 'code' );
$('#fieldcolor').val( 'status' );
</script>
我正在尝试使用ajaxComplete,但是我获得了一个无限循环,每个ajax调用结束时调用ajaxComplete ...:
$('#database').ajaxComplete( function (e) {
$('#table').val( 'payments' );
$('#table').change();
} );
请帮助!
答案 0 :(得分:1)
我轻松解决了......
$.ajax( {complete:function() {
$('#database').val('main_database');
$.ajax( {complete:function() {
$('#table').val('payments');
$.ajax( {complete:function() {
$('#fieldcode').val( 'code' );
$('#fieldcolor').val( 'status' );
}});
}});
}});
答案 1 :(得分:0)
我假设您的代码中有更多内容而不是眼睛,如果是这样,这应该可以解决问题:
$('#connection').change(function(){
$('#database').val('main_database');
});
$('#database').change(function(){
$('#table').val('payments');
});
$('#table').change(function(){
$('#fieldcode').val( 'code' );
$('#fieldcolor').val( 'status' );
});