2013-08-19 3 views
7

Ho esaminato le altre domande simili e ho provato molte delle soluzioni, ma nessuna ha funzionato. Ecco il problema, questo è un mini modulo di login per il banner in alto. Ho bisogno che il pulsante non si chiuda automaticamente quando clicchi nei campi. Ecco il mio codice:Twitter Bootstrap non può fermare un menu a discesa dalla chiusura al clic

<script> 
    $(document).on('click', '.dropdown-menu', function(e){ 
     $(this).hasClass('keep_open') && e.stopPropagation(); // This replace if conditional. 
    }); 
    ​</script>     
    <div class="btn-group" > 
     <a class="btn btn-small btn-inverse dropdown-toggle" data-toggle="dropdown" href="#"> 
     <i class="cus-key"></i> Login 
     <span class="caret"></span> 
     </a> 
     <ul class="dropdown-menu pull-right keep_open"> 
     <form action="clog.php" method="post" class="keep_open"> 
     <!-- dropdown menu links --> 
      <li><input type="text" placeholder="Username..." class="keep_open" /></li> 
      <li><input type="text" placeholder="Password..." class="keep_open"/></li> 
      <li><input type="submit" name="submit" style="background-image: url('img/login.png'); width: 110px; height: 32px; cursor: hand; margin-top: -5px" value=" " /></li> 
      <li><a href="/riders/register.php" ><span style="color: green; float: right" > Sign up for account<i class="icon-double-angle-right"></i></a></span></li> 
     </form> 
     </ul> 
    </div> 
+0

sembra che la propagazione dello stop non funzioni. Ho aggiunto la classe a quasi tutto in preda alla disperazione! – srt8driver

+0

puoi fornire un [violino] (http://jsfiddle.net) che replica il problema? –

+0

http://jsfiddle.net/X5xTX/ (nuovo per il violino, non sono sicuro di aver capito bene) – srt8driver

risposta

3

ho avuto lo stesso problema con un/commutare sottomenu fisarmonica che viene inserita all'interno di una discesa-menu Bootstrap 3. Borrowed questa sintassi dal source code per fermare tutte le alterna crollo di chiudere il menu a discesa:

$(document).on(
    'click.bs.dropdown.data-api', 
    '[data-toggle="collapse"]', 
    function (e) { e.stopPropagation() } 
); 

È possibile sostituire [data-toggle="collapse"] con tutto ciò che vuole fermare la chiusura del modulo, ad esempio, un'altra classe o un'altra proprietà dei dati.

+0

Questa è la risposta corretta. [data-toggle = "collapse"] può essere sostituito con la classe specifica del menu AND 'body' (il menu a discesa si chiude anche quando fai clic in qualsiasi punto all'interno del BODY). ad esempio "main_menu, body" – Steven

18

L'ho capito. Non era all'interno della funzione pronta per il documento. (Punta di cappello a Koala_dev) JavaScript deve essere:

<script type="text/javascript"> 

    $(document).ready(function() { 
     $(document).on('click', '.dropdown-menu', function (e) { 
      $(this).hasClass('keep_open') && e.stopPropagation(); // This replace if conditional. 
     }); 
    }); 
    </script>