2012-02-20 27 views
6

Tôi đang gọi một trang (xem mã bên dưới) từ danh sách các liên kết trên một trang khác bằng cách sử dụng. Danh sách như thế nàyJquery mobile - Làm mới hộp kiểm với pageinit

<ul data-role="listview" data-theme="g"> 
     <li><a href="test.html">test</a></li> 
</ul> 

với mã bên dưới là trang test.html.

Tôi đang sử dụng thiết bị di động jquery trên các trang này. Chỉ các hộp kiểm sau khi 3 hộp kiểm đầu tiên dường như được làm mới đúng cách (xuất hiện dưới dạng đã chọn) khi trang được tải bằng cách nhấp vào liên kết. Ba hộp kiểm đầu tiên luôn xuất hiện để không được chọn và giá trị đã chọn của chúng được đặt thành false. Điều bất thường là nếu tôi đặt câu lệnh if ngay sau câu lệnh đặt hộp kiểm thành true thì giá trị kiểm tra hộp kiểm được đánh giá là đúng, nhưng có vẻ sai trên trang được hiển thị và bạn nhìn vào giá trị đã chọn trong vùng yếu tố của thanh tra web. Khi bạn làm mới trang (bằng cách sử dụng F5 hoặc nút làm mới gần thanh địa chỉ), các hộp kiểm sẽ làm mới như bạn mong đợi. Mọi sự trợ giúp sẽ rất được trân trọng. Mặc dù mã mẫu bên dưới dường như chỉ được đặt tất cả các hộp kiểm thành giá trị được kiểm tra Tôi thực sự (trong trang thực của tôi) thiết lập giá trị của chúng dựa trên dữ liệu từ một recordset vì vậy tôi không thể thực hiện cài đặt hàng loạt thành true và refresh. Tôi phải lặp qua recordset và thiết lập các giá trị hộp kiểm cho phù hợp. Mã dưới đây chỉ là một bản sao đơn giản của lỗi mà tôi đang gặp phải. Cảm ơn bạn!

<!doctype html> 
<html lang="en"> 
    <head> 
     <meta charset="utf-8" /> 
     <title>Checkbox</title> 
     <meta name="viewport" content="width=device-width, initial-scale=1,maximum-scale=1"> 
      <link rel="stylesheet" href="jqm1/jquery.mobile.structure-1.0.1.min.css" /> 
      <script src="jqm/jquery-1.7.1.min.js"></script> 
      <script src="jqm/jquery.mobile-1.0.1.min.js"></script> 

     </head> 
     <body> 
     <div id="loadCB" data-role="page"> 
      <script type="text/javascript"> 
       $("#loadCB").live('pageinit', function() { 
        // do something here... 


        for (i=0;i<=5;i++) 
        { 
        $("#checkbox-"+i).prop("checked", true); 
        $("#checkbox-"+i).prop("checked", true).checkboxradio("refresh"); 
        } 


       }); 
      </script> 

      <article data-role="content"> 


       <form id="frmR"> 
        <input type="checkbox" name="checkbox-0" id="checkbox-0" class="custom" value="0"/> 
        <label for="checkbox-0">checkbox-0</label> 
        <input type="checkbox" name="checkbox-1" id="checkbox-1" class="custom" value="1"/> 
        <label for="checkbox-1">checkbox-1</label> 
        <input type="checkbox" name="checkbox-2" id="checkbox-2" class="custom" value="2"/> 
        <label for="checkbox-2">checkbox-2</label> 
        <input type="checkbox" name="checkbox-3" id="checkbox-3" class="custom" value="3"/> 
        <label for="checkbox-3">checkbox-3</label> 
        <input type="checkbox" name="checkbox-4" id="checkbox-4" class="custom" value="4"/> 
        <label for="checkbox-4">checkbox-4</label> 
        <input type="checkbox" name="checkbox-5" id="checkbox-5" class="custom" value="5"/> 
        <label for="checkbox-5">checkbox-5</label> 

        <input type="submit" value="Set Rules" /> 
       </form>    


      </article>   
     </body> 
    </div> 
    </html> 

Trả lời

3

Tôi đã viết một danh sách khá toàn diện về các widget và các phương pháp mà bạn làm mới cho họ: http://andymatthews.net/read/2011/12/14/Refreshing-jQuery-Mobile-listviews,-buttons,-select-dropdowns,-and-input-fields

Có lẽ đó sẽ trả lời câu hỏi của bạn?

+0

Cảm ơn bạn đã trả lời. Dường như tôi đã sử dụng mã tương tự như bạn hiển thị trên trang của mình. Các hộp kiểm của tôi dường như không làm mới chính xác khi trang được tải từ một trang khác. –

6

Kiểm tra mã này

$("#loadCB").live('pageinit', function() { 
        // do something here... 


        $("input[type='checkbox']").attr("checked",false).checkboxradio("refresh"); 


       }); 
+0

Harry, Cảm ơn bạn đã phản hồi. Trong khi điều này sẽ đặt tất cả các hộp kiểm để kiểm tra nó không giải quyết được vấn đề trong ví dụ tôi đã cung cấp. Tôi đang thiết lập các giá trị hộp kiểm dựa trên một recordset được trả về từ một cơ sở dữ liệu vì vậy tôi không thể đặt tất cả các giá trị thành true. Tôi phải lặp qua các bản ghi và chỉ đặt các hộp kiểm cần được chọn để kiểm tra. Vấn đề của tôi là ba hộp kiểm đầu tiên không bao giờ có vẻ làm mới chính xác. Cảm ơn. –

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