2009-07-26 7 views
0

J'utilise jquery pour les onglets ajax, non JQuery UI qui est trop grand pour mes besoins Ce code ci-dessous est mes onglets ajax, il charge l'onglet sélectionné avec un fichier externeComment recharger un onglet jquery dans un formulaire?

J'ai aussi un pour qui utilise ajax pour publier des données sur cette page HOMEfriendstatus.inc.php qui est # tab2

Ce que je veux savoir lorsque je soumets le formulaire, quel que soit l'onglet que l'utilisateur a chargé à l'écran, puis-je le faire recharger ou passer à # tab2 pour afficher le contenu mis à jour de # tab2?

<script type="text/javascript"> 
var pageUrl = new Array();   
pageUrl[1] = "HOMEbulletin.inc.php"; 
pageUrl[2] = "HOMEfriendstatus.inc.php"; 
pageUrl[3] = "HOMEbulletin.inc.php"; 



function loadTab(id){ 
    if (pageUrl[id].length > 0){ 
     $("#loading").show(); 
     $.ajax({url: pageUrl[id], cache: false, success: function(message) {        
      $("#tabcontent").empty().append(message); 
      $("#loading").hide();    
     } 
    });     
} 
} 

$(document).ready(function(){ 
    /*$("#tab1").addClass('selected');*/ 
    $("#loading").hide(); 
    $("#tab1").click(function(){ 
     loadTab(1); 
     $('div.HOMEtabdiv ul.HOMEtabs a').removeClass('selected'); 
     $(this).addClass('selected'); 
    }); 

    $("#tab2").click(function(){ 
     loadTab(2); 
     $('div.HOMEtabdiv ul.HOMEtabs a').removeClass('selected'); 
     $(this).addClass('selected'); 
    }); 

    $("#tab3").click(function(){ 
     loadTab(3); 
     $('div.HOMEtabdiv ul.HOMEtabs a').removeClass('selected'); 
     $(this).addClass('selected'); 
    }); 
    }); 
</script> 
+2

Vous réalisez avec toutes ces conneries supplémentaires que vous écrivez, vous approchez rapidement de la taille de JQueryUI. JQueryUI avec seulement son noyau et ses onglets est seulement: 184.23 kb non compressé et ~ 122.7 kb minifié. Considérant que google l'héberge même pour vous sur des serveurs beaucoup mieux, plus vite, et nombreux que le vôtre est presque trop beau pour être vrai. Ne pas l'utiliser est, pour être franc, stupide. – Sneakyness

+1

En raison du fait que Google l'héberge, si l'un de vos visiteurs a déjà visité un site Web qui utilise également la version hébergée de Google, il utilisera simplement la copie qu'il a déjà téléchargée. Cela signifie 0 bande passante utilisée, chargée à partir de l'ordinateur de l'utilisateur. Vous ne pouvez pas obtenir mieux que ça. – Sneakyness

Répondre

1

Avez-vous essayé d'exécuter loadTab(2) dans le formulaire de rappel de succès? Cela devrait suffire.

Vous ne nous ont pas montré votre code pour envoyer formulaire via AJAX, mais je suppose que quelque chose de semblable devrait fonctionner:

$.post('http://example.com/ajax/form', $('form').serialize(), 
    function (data, textStatus) { 
     loadTab(2); 
     $('div.HOMEtabdiv ul.HOMEtabs a').removeClass('selected'); 
     $('#tab2').addClass('selected'); 
    } 
); 

Notez que le code fait double emploi avec la fonction $("#tab2").click() de sorte que vous devriez envisager d'utiliser la fonction nommée au lieu d'anonyme dans ce cas et de le réutiliser dans le rappel ajax:

function loadSecondTab() { 
    loadTab(2); 
    $('div.HOMEtabdiv ul.HOMEtabs a').removeClass('selected'); 
    $('#tab2').addClass('selected'); 
} 

$('#tab2').click(loadSecondTab); 
$.post('http://example.com/ajax/form', $('form').serialize(), loadSecondTab); 

PS. L'interface utilisateur de jQuery n'est pas trop grande. Vous n'avez pas besoin d'utiliser tous les bits. Vous pouvez facilement charger le module onglets.

+1

Il n'est pas capable de comprendre cela, ou le fait que JQueryUI a toutes ces fonctions intégrées. Il est évident qu'il ne comprend même pas la langue, on lui demande qu'est-ce que c'est, trois questions maintenant sur le même morceau de code? Nous écrivons son site pour lui. Quelqu'un notera son adresse afin que nous puissions lui envoyer une facture. – Sneakyness

+0

Merci qui fait depuis que je vais essayer – JasonDavis

Questions connexes