2013-08-09 49 views
5

Tôi có băng chuyền Bootstrap chứa một biểu mẫu đơn giản. Bạn có thể đặt băng chuyền để tạm dừng khi được di chuột lên. Tuy nhiên, nếu con trỏ rời khỏi khu vực Carousel trong khi nhập trong các yếu tố đầu vào, băng chuyền sẽ chuyển về chu kỳ mặc định và khoảng thời gian 5000ms.Cách tạm dừng băng chuyền Bootstrap ở tiêu điểm đầu vào

Tôi đang tìm cách đặt nó ở trạng thái tạm dừng trong quá trình lấy nét đầu vào và khởi động lại chu kỳ tập trung vào đầu vào.

<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> 

Dường như khi một băng chuyền đã được ban đầu được gọi là (và một bộ khoảng thời gian), bạn không thể thay đổi mà khoảng thời gian hoặc băng chuyền hành vi.

Mọi thông tin chi tiết đều tuyệt vời.

+0

Chỉ cần một tiền chất. Đây là phiên bản rút gọn. Tôi không tìm kiếm lời khuyên HTML (không có hình thức thực tế vv), chỉ cần một số gợi ý javascript liên quan đến Bootstraps Carousel. Cảm ơn – dazziola

Trả lời

12

Bạn cần gọi hàm tạm dừng như sau: $("#myCarousel").carousel('pause');. Đây là cách tất cả các phương thức được gọi trên các thành phần bootstrap, tuân theo quy ước UI của jQuery.

Bạn có thể khởi động lại băng chuyền bằng cách nghe sự kiện blur sau đó gọi phương thức cycle. Bạn cũng cần di chuyển trình xử lý sự kiện của mình bên trong trình bao bọc $(function() {...});. Điều này đảm bảo tất cả các phần tử DOM có mặt và sẵn sàng để được thao tác.

Vì vậy, mã tạm dừng/đi xe đạp của bạn sẽ trông như thế:

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

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

Working Demo

+0

Demo của bạn dường như hoạt động tốt, nhưng tích hợp với mã của tôi có vẻ như nó không hoạt động. Thực tế là tôi khởi tạo băng chuyền, trên sẵn sàng ở dưới cùng của tập tin là một cuộc xung đột với các cuộc gọi xuất hiện giữa đường thông qua các tập tin? Đánh giá cao sự trợ giúp nhanh chóng mặc dù – dazziola

+1

Xin lỗi, tôi quên đề cập đến rằng tất cả mã jQuery của bạn phải nằm trong trình bao bọc '$ (function() {})' của bạn. Điều này đảm bảo tất cả các yếu tố dom có ​​mặt và sẵn sàng để được thao tác. – cfs

+0

Aaah Tôi đã hy vọng một số tài liệu của họ sẽ xử lý (tôi tưởng tượng đó là một vấn đề phổ biến), http://getbootstrap.com/javascript/#carousel, nhưng điều này là đơn giản và thực hiện công việc một cách hoàn hảo. Cảm ơn! –

0

Đây là cách bạn tạm dừng một băng chuyền

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

Tôi đã thử điều này trước đây và nó không hiệu quả với tôi. Bạn cũng có thể rất đúng nhưng có lẽ vị trí của cuộc gọi khởi tạo băng chuyền của chúng tôi là mâu thuẫn với các cuộc gọi băng chuyền cụ thể đầu vào. Bootstrap chỉ cho phép một cuộc gọi băng chuyền cho mỗi ID? – dazziola

0

omg, tôi nghĩ rằng nó sẽ tốt hơn để bắt đầu băng chuyền đúng cách ....

trên di chuột không cho phép chúng tạm dừng và trên đối tượng tạm dừng mouseleave!

thấy điều này

$(".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

Chào mừng bạn đến với SO zumi :). Tôi nghĩ rằng câu trả lời cho vấn đề đầy đủ đã được trả lời bởi cfs. Và tôi nghĩ rằng mã của bạn không trả lời chính xác cho câu hỏi: ví dụ: sau khi tải trang, tôi nghĩ băng chuyền sẽ không chạy – Asenar

Các vấn đề liên quan