2009-01-23 44 views
27

Tôi có thói quen javascript đang thực hiện tác vụ trên một nhóm hộp kiểm, nhưng hành động cuối cùng tôi muốn đặt hộp kiểm được nhấp để chọn hoặc bỏ chọn dựa trên người dùng chọn hộp hoặc bỏ chọn.Javascript để kiểm tra xem hộp kiểm có đang được chọn hay không được chọn

Thật không may, mỗi khi tôi kiểm tra xem nó đang được kiểm tra hay không được chọn, nó sẽ trả về "bật" cho biết người dùng luôn kiểm tra hộp! Bất kỳ trợ giúp sẽ được đánh giá cao, tôi cũng đã bao gồm javascript.

// Uncheck all the checkboxs with the same Tax Credit 
for (i=0; i<arrChecks.length; i++) 
{ 
    var attribute = arrChecks[i].getAttribute("xid") 
    if (attribute == elementName) 
    { 
     // if the current state is checked, unchecked and vice-versa 
     if (arrChecks[i].value == "on") // <-- This is always returning true, even if the box is being unchecked 
     { 
      arrChecks[i].checked = 1; 
     } else { 
      arrChecks[i].checked = 0; 
     } 

    } else { 
     arrChecks[i].checked = 0; 
    } 
} 
+0

Cách chính xác để kiểm tra hộp kiểm trong html được chọn = "đã chọn" –

+1

Bạn có coi các thư viện như jquery, prototype, moo hay yui không? Chúng làm cho điều này dễ dàng hơn một chút –

Trả lời

24

Bạn nên đánh giá dựa vào thuộc tính đã chọn của phần tử hộp kiểm.

for (i=0; i<arrChecks.length; i++) 
{ 
    var attribute = arrChecks[i].getAttribute("xid") 
    if (attribute == elementName) 
    { 
     // if the current state is checked, unchecked and vice-versa 
     if (arrChecks[i].checked) 
     { 
      arrChecks[i].checked = false; 
     } else { 
      arrChecks[i].checked = true; 
     } 

    } else { 
     arrChecks[i].checked = false; 
    } 
} 
+1

Cảm ơn các bạn, điều này hoạt động hoàn hảo! –

+0

Tôi đã làm việc trên một số dự án khác và mã này hoạt động hoàn hảo khi bạn sử dụng mã nếu (arrChecks [i] .checked) –

17

Các value thuộc tính của một checkbox là những gì bạn được thiết lập bởi:

<input type='checkbox' name='test' value='1'> 

Vì vậy, khi một người nào đó để kiểm tra rằng hộp, máy chủ nhận được một biến có tên test với một value của 1 - những gì bạn muốn kiểm tra cho không phải là value của nó (mà sẽ không bao giờ thay đổi, cho dù nó được kiểm tra hay không) nhưng tình trạng checked của hộp kiểm.

Vì vậy, nếu bạn thay thế mã này:

if (arrChecks[i].value == "on") 
{ 
    arrChecks[i].checked = 1; 
} else { 
    arrChecks[i].checked = 0; 
} 

Với điều này:

arrChecks[i].checked = !arrChecks[i].checked; 

Nó sẽ làm việc. Bạn nên sử dụng truefalse thay vì 01 cho việc này.

+0

Vì vậy, mã sẽ xuất hiện là: "if (arrChecks [i] .checked) arrChecks [i] .checked = 1;". Điều đó cũng không đúng. –

+1

đủ công bằng. không nhìn vào logic ở đó. đã sửa. –

0

Tôi không chắc vấn đề là gì, nhưng tôi khá chắc chắn điều này sẽ khắc phục được sự cố.

for (i=0; i<arrChecks.length; i++) 
    { 
     var attribute = arrChecks[i].getAttribute("xid") 
     if (attribute == elementName) 
     { 
      if (arrChecks[i].checked == 0) 
      { 
       arrChecks[i].checked = 1; 
      } else { 
       arrChecks[i].checked = 0; 
      } 

     } else { 
      arrChecks[i].checked = 0; 
     } 
    } 
0

Ngoài ra hãy đảm bảo bạn thử nghiệm cả trong firefox và IE. Có một số lỗi khó chịu với các hộp kiểm thao tác JS.

5

Để chuyển đổi một hộp kiểm hoặc bạn có thể sử dụng

element.checked = !element.checked; 

vì vậy bạn có thể sử dụng

if (attribute == elementName) 
{ 
    arrChecks[i].checked = !arrChecks[i].checked; 
} else { 
    arrChecks[i].checked = false; 
} 
4
function enter_comment(super_id) { 
    if (!(document.getElementById(super_id).checked)) { 
     alert('selected checkbox is unchecked now') 
    } else { 
     alert('selected checkbox is checked now'); 
    } 
} 

<input type="checkbox" name="a" id="1" value="1" onclick="enter_comment(this.value)" />

<input type="checkbox" name="b" id="2" value="2" onclick="enter_comment(this.value)" />

+0

Điều này được thử nghiệm trong IE, Mozilla, google crome vv ..... –

3
function CHeck(){ 
    var ChkBox = document.getElementById("CheckBox1"); 
    alert(ChkBox.Checked); 
} 

<asp:CheckBox ID="CheckBox1" runat="server" onclick="CHeck()" /> 
+2

(-1) nên là ChkBox.được kiểm tra vì nó phân biệt chữ hoa chữ thường. Tôi đã dành ~ 20 phút cố gắng để có được ví dụ của bạn để làm việc trước khi tôi nhận ra lỗi! – Eyad

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