2009-09-14 8 views
1

Je voudrais exécuter une fonction quand Simplemodal ouvre une fenêtre, et a rempli le champ 'onShow' avec une fonction de rappel. Dans l'exemple ci-dessous, je l'ai simplement rempli avec une note d'alerte, c'est-à-dire que chaque fois que la fenêtre simplemodal est ouverte, l'alerte devrait se déclencherLa méthode onshow jquery + Simplemodal ne s'exécute qu'une seule fois

Cependant, il semble que ce soit seulement exécuté une seule fois. Si le modal est ouvert, puis fermé, puis rouvert, lors de la réouverture, cette méthode n'est pas appelée lors des ouvertures suivantes.

S'il vous plaît couper et coller le code HTML ci-dessous dans un document pour voir ce comportement (fermer la fenêtre modale, puis cliquez sur le bouton de fenêtre modale ouverte)

Qu'est-ce que je manque qui permettra onShow d'exécuter chaque fois que la fenêtre est ouvert?

<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 

<link type="text/css" href="ttp://jqueryui.com/latest/themes/base/ui.all.css" rel="stylesheet" /> 
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js" type="text/javascript"></script> 
    <script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.7.2/jquery-ui.min.js" type="text/javascript"></script> 
    <script src='http://www.ericmmartin.com/simplemodal/js/jquery.simplemodal.js' type='text/javascript'></script> 
    <script src='http://www.ericmmartin.com/simplemodal/js/basic.js' type='text/javascript'></script> 


    <link type='text/css' href='ttp://www.ericmmartin.com/simplemodal/css/basic.css' rel='stylesheet' media='screen' /> 



<script type="text/javascript"> 


$().ready(function() { 

    $('#basic-modal input.basic, #basic-modal a.basic').click(function (e) { 
     e.preventDefault(); 
     $('#basic-modal-content').modal(); 
    }); 

    $('#basic-modal-content').modal({onShow: 

    function(dialog) { 
    alert('hello'); 


}}); 



}); 

</script> 
</head> 

<body> 

    <div id='basic-modal-content'> 
    <input type="text" id="amount" style="border:0; color:#ffffff; font-weight:bold; width: 40px; background: #aaaaaa;" /> 
    <div id="slider-vertical" style="height:200px;"></div> 
    </div> 

    <div id='basic-modal'> 
    <h2>Basic Modal Dialog</h2> 
     <form action='download/' method='post'> 
      <input type='button' name='basic' value='Show modal' class='basic demo'/> 
     </form> 
    </div> 
</body> 

Répondre

2

Vous devez supprimer le basic.js que vous chargez de mon site. C'est en conflit avec votre code.

+0

Merci, je vais essayer ça. – folder

0

Je pense que vous voulez utiliser l'option onShow chaque fois que vous appelez modal.

$('#basic-modal input.basic, #basic-modal a.basic').click(function (e) { 
    e.preventDefault(); 
    $('#basic-modal-content').modal({ 
     onShow: function(dialog) { 
     alert('hello'); 
     } 
    }); 
}); 
+0

Dans le code ci-dessus, je ne vois jamais l'alerte être tirée du tout. – folder

+0

Etes-vous sûr que l'événement click est déclenché? –

+0

Oui, car si je change le code à ce qui suit, la première alerte est déclenchée: $ ('# basic-modal input.basic, # basic-modal a.basic'). Cliquez sur (function (e) { . alerte (clic feu '); e.preventDefault(); $ (' # contenu de base-modale) modal ( {onShow: function (dialogue) { alert ('bonjour'); }} ); }); – folder

Questions connexes