2014-12-02 55 views
0

我severals白手起家情態動詞在我的網站的引導模式 - 對話框的滿負荷,而我加載它們是這樣的:如何等待裝載jQuery的.load()函數

function modal_density(){ 
    $("#modal-content").load("pages/modals/density_control.php"); 
    $('#all_modal').modal('show'); 
} 

然後我關閉他們是這樣的:

function close_modal(){ 
    $("#modal-content").empty(); 
    $('#all_modal').modal('hide'); 
} 

我希望把焦點在我的模式的輸入,但我認爲,模態未滿載時,我嘗試這樣做:

function modal_density(){ 
    $("#modal-content").load("pages/modals/density_control.php"); 
    $('#all_modal').modal('show'); 
    $("#element").focus();//<----Added part 
} 

如何等待我的元素滿載?


[編輯]:我tryed這一點,這是行不通的:

function modal_controle_densite_valid(){ 
    $("#modal-content").load("pages/modals/controle_densite_validation.php", function() { 
     $('#all_modal').modal('show'); 
     $("#codebarre").focus(); 
    }); 
} 

但是,下面的代碼是2秒後的工作:

function modal_controle_densite_valid(){ 
    $("#modal-content").load("pages/modals/controle_densite_validation.php", function() { 
     $('#all_modal').modal('show'); 
     setTimeout(function() {$("#codebarre").focus()}, 2000); 
     //$("#codebarre").focus(); 
    }); 
} 

回答

1

load()方法有第二個參數,它允許你提供一個當AJAX請求完成時應該執行的函數。試試這個:

function modal_density(){ 
    $("#modal-content").load("pages/modals/density_control.php", function() { 
     $('#all_modal').modal('show').on('shown', function() { 
      $("#codebarre").focus(); 
     }); 
    }); 
} 
+0

它不起作用。我不明白。我刪除了自動對焦並使用了你的功能,焦點不起作用。但是我可以看到模態,意思是執行.modal(「show」) – Gauthier 2014-12-02 10:01:40

+0

控制檯中是否有任何錯誤? – 2014-12-02 10:03:25

+0

控制檯中沒有錯誤。我在我的文章中添加了一些東西,看看 – Gauthier 2014-12-02 10:06:19

1

jQuery的load採用了回調這將在裝載完成後執行

$("#modal-content").load("pages/modals/density_control.php",function(){ 
    $("#element").focus(); 
});