2013-08-09 12 views
5

Mam karuzelę Bootstrap, która zawiera prosty formularz. Możesz ustawić karuzelę tak, by zatrzymywała się, gdy się nią kręci. Jeśli jednak kursor opuszcza obszar karuzeli podczas wpisywania w obrębie danych wejściowych, karuzela powraca do domyślnego cyklu i przedziału 5000 ms.Jak wstrzymać karuzelę Bootstrap na ognisku wejściowym

Czekam, aby ustawić go tak, aby pozostał zatrzymany podczas fokusowania wejściowego i wznowił cykl po aktywacji wejścia.

<div id="myCarousel" class="carousel slide"> 
<div class="carousel-inner"> 
    <div id="slide1" class="item"> 
     This is a test slide. 
    </div> 
    <div id="slide2" class="item" > 
     <input type="text" placeholder="name" name="full_name" /> 
    </div> 
</div> 

<!-- Carousel nav --> 
<a class="carousel-control left" href="#myCarousel" data-slide="prev">‹</a> 
<a class="carousel-control right" href="#myCarousel" data-slide="next">›</a> 

</div> 

<script> 

!function ($) { 
    $(function(){ 
     $('#myCarousel.slide').carousel({ 
      interval: 5000, 
      pause: "hover" 
     }) 
    }) 
}(window.jQuery) 

$('input').focus(function(){ 
    $("#myCarousel").pause() 
}) /* Will worry about restarting carousel on mouseout if I could get this pause working */ 


</script> 

Wydaje się, że gdy karuzela została początkowo nazywany (i odmierzanie czasu) nie można zmieniać tego przedziału lub karuzeli zachowanie.

Wszelkie spostrzeżenia będą świetne.

+0

Tylko prekursora. To jest obnażona wersja. Nie szukam porad HTML (nie ma rzeczywistej formy itp.), Tylko niektóre wskazówki javascript dotyczące karuzeli Bootstraps. Dzięki – dazziola

Odpowiedz

12

Będziesz musiał wywołać funkcję pauzy w ten sposób: $("#myCarousel").carousel('pause');. W ten sposób wszystkie metody są wywoływane na komponentach bootstrap, zgodnie z konwencją jQuery UI.

Możesz ponownie uruchomić karuzelę, słuchając zdarzenia blur, a następnie wywołując metodę cycle. Będziesz także musiał przenieść swoje programy do obsługi zdarzeń w opakowaniu $(function() {...});. Dzięki temu wszystkie elementy DOM są obecne i gotowe do manipulacji.

Więc kod Wstrzymywanie/cycling wyglądałby następująco:

$(function(){ 
    $('#myCarousel.slide').carousel({ 
     interval: 5000, 
     pause: "hover" 
    }); 

    $('input').focus(function(){ 
     $("#myCarousel").carousel('pause'); 
    }).blur(function() { 
     $("#myCarousel").carousel('cycle'); 
    }); 
}); 

Working Demo

+0

Twoje demo wydaje się działać świetnie, ale zintegrowane z moim kodem wydaje się nie działać. Czy fakt, że zainicjowałem karuzelę, gotowy na samym końcu pliku, może być sprzeczny z tymi wywołaniami, które pojawiają się w połowie pliku? Docenię szybką pomoc, chociaż: – dazziola

+1

Niestety, zapomniałem wspomnieć, że cały twój kod jQuery powinien znajdować się w opakowaniu '$ (function() {})'. To zapewnia, że ​​wszystkie elementy domowe są obecne i gotowe do manipulacji. – cfs

+0

Aaah Miałem nadzieję, że niektóre z ich dokumentacji poradzą sobie z tym (wyobrażam sobie, że jest to częsty problem), http://getbootstrap.com/javascript/#carousel, ale jest to proste i doskonale działa. Dzięki! –

0

ten sposób można wstrzymać karuzelę

$("#myCarousel").carousel('pause'); 
+0

Próbowałem już wcześniej i nie działało to dla mnie. Możesz mieć rację, ale być może lokalizacja wywołania inicjującego karuzelę jest sprzeczna z wejściowymi wywołaniami karuzeli. Czy Bootstrap zezwala tylko na jedno wywołanie karuzeli na identyfikator? – dazziola

0

omg, myślę, że byłoby lepiej zainicjować karuzelę we właściwy sposób ....

po najechaniu myszą, nie pozwól im się zatrzymać i zatrzymać obiekt na myszy!

zobaczyć ten

$(".carousel").hover(
      function() { 
       $("#"+this.id).carousel({ 
        interval: 2000, 
        //pause: 'hover' 
        pause: 'none' // disable default option "pause on hover" and set it to none 
       }); 
      }, function() { 
       $("#"+this.id).carousel('pause'); // to set it manually on a spezific carousel id 
      } 
    ); 

Greetz Zumi

+0

Witaj w SO zumi :). Myślę, że odpowiedź na cały problem została rozwiązana przez cfs. I myślę, że twój kod nie odpowiada dokładnie na pytanie: na przykład, po wczytaniu strony, myślę, że karuzela nie będzie działać – Asenar

Powiązane problemy