2012-12-02 31 views
7

Tôi đã thử mã này để đạt được những gì tôi muốn làm. Nó hoạt động khi tôi thử nó trong tập tin HTML thông thường của tôi, nhưng khi tôi thử nó trong trang JQuery Mobile, mã không hoạt động tốt cho tôi. Có các cách hoặc mã khác nhau để chọn hộp kiểm JQuery Mobile không?Kiểm tra & bỏ chọn hộp kiểm bên trong Hộp thoại di động JQuery

Dưới đây là đoạn code mà tôi đã cố gắng:

JAVASCRIPT:

<script> 
function SetAllCheckBoxes(FormName, FieldName, CheckValue) 
{ 
    if(!document.forms[FormName]) 
     return; 
    var objCheckBoxes = document.forms[FormName].elements[FieldName]; 
    if(!objCheckBoxes) 
     return; 
    var countCheckBoxes = objCheckBoxes.length; 
    if(!countCheckBoxes) 
     objCheckBoxes.checked = CheckValue; 
    else 
     // set the check value for all check boxes 
     for(var i = 0; i < countCheckBoxes; i++) 
      objCheckBoxes[i].checked = CheckValue; 
} 

HTML

<form method="GET" name="myForm" onsubmit="return false;"> 
<label for="myCheckbox1"> 
    <input type="checkbox" name="myCheckbox" value="1" id="myCheckbox1"> 
    I like Britney Spears 
</label> 
<br> 

<label for="myCheckbox2"><input type="checkbox" name="myCheckbox" value="2" id="myCheckbox2"> 
    I like Hillary Duff 
</label> 
<br> 

<label for="myCheckbox3"><input type="checkbox" name="myCheckbox" value="3" id="myCheckbox3"> 
    I like Mandy Moore 
</label> 
<br> 

<input type="button" onclick="SetAllCheckBoxes('myForm', 'myCheckbox', true);" value="I like them all!"> 
&nbsp;&nbsp; 
<input type="button" onclick="SetAllCheckBoxes('myForm', 'myCheckbox', false);" value="I don't like any of them!"> 

Trả lời

22

Tôi không biết rằng các hộp kiểm của JQuery Mobile cần phải được làm mới sau khi bỏ chọn/kiểm tra chúng thông qua JQuery hoặc Javascript. Dưới đây là các mã:

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

http://api.jquerymobile.com/checkboxradio/#method-refresh

+0

Đúng vậy. Câu trả lời của bạn có vẻ như của tôi. –

+0

Có, nhưng vấn đề duy nhất của mã của tôi là thêm '.checkboxradio ('refresh')' và đây có thể là cách dễ nhất để đăng nó vì vậy tôi đã thêm câu trả lời của mình. – JetPro

+0

Được rồi! Làm tốt lắm. –

4

Hãy thử điều này:

function SetAllCheckBoxes(FormName, CheckValue){ 
    $.each($("#"+FormName+" input[type=checkbox]"), function(){ 
     $(this).attr("checked",CheckValue).checkboxradio("refresh"); 
    }); 
} 

Tôi đã xóa FieldName vì hàm của bạn được đặt tên là SetAllCheckBoxes, chỉ các trường nhập của bạn giống nhau. Bạn chỉ cần biết biểu mẫu của bạn là gì và trạng thái hộp kiểm của bạn.

+0

Tôi đã tìm ra điều này. Tôi đã đăng câu trả lời của mình, nhưng cảm ơn câu trả lời của bạn. – JetPro

0

Để chuyển đổi/hộp kiểm refresh trong jquery di động, bạn cần phải sử dụng .prop, chứ không phải là .attr.

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

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