如何在没有 setTimeout 的情况下加载值?

发布于 2024-09-10 13:32:25 字数 1663 浏览 4 评论 0原文

看下面的例子:

<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>
I'm trying to do it with ajaxComplete but I get an infinite cycle, dure to each ajax call ends the ajaxComplete is called ... :

$('#database').ajaxComplete( function (e) { 
    $('#table').val( 'payments' );    
    $('#table').change();   
} );

请帮忙!

Look the following example:

<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>

This code works, but I don't like it. What I want to do is to load the values subsequently, when the "change event" ends (succes or completed) then call the next, for example if I do the following example without setTimeout this not works:


    <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>


I'm trying to do it with ajaxComplete but I get an infinite cycle, dure to each ajax call ends the ajaxComplete is called ... :

$('#database').ajaxComplete( function (e) { 
    $('#table').val( 'payments' );    
    $('#table').change();   
} );

PLEASE HELP!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

只有一腔孤勇 2024-09-17 13:32:25

我很容易解决...

$.ajax( {complete:function() {

    $('#database').val('main_database');

    $.ajax( {complete:function() {

        $('#table').val('payments');   

            $.ajax( {complete:function() { 

                $('#fieldcode').val( 'code' );
                $('#fieldcolor').val( 'status' );
            }});
    }});
}});

I solved easy...

$.ajax( {complete:function() {

    $('#database').val('main_database');

    $.ajax( {complete:function() {

        $('#table').val('payments');   

            $.ajax( {complete:function() { 

                $('#fieldcode').val( 'code' );
                $('#fieldcolor').val( 'status' );
            }});
    }});
}});
半边脸i 2024-09-17 13:32:25

我假设您的代码比您看到的要多,如果是这样,这应该可以解决问题:

$('#connection').change(function(){
    $('#database').val('main_database');
}); 
$('#database').change(function(){
    $('#table').val('payments');    
}); 
$('#table').change(function(){
    $('#fieldcode').val( 'code' );
    $('#fieldcolor').val( 'status' );
});

I'm assuming there is more to your code than meets the eye, if so this should do the trick:

$('#connection').change(function(){
    $('#database').val('main_database');
}); 
$('#database').change(function(){
    $('#table').val('payments');    
}); 
$('#table').change(function(){
    $('#fieldcode').val( 'code' );
    $('#fieldcolor').val( 'status' );
});
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文