2009-09-02 71 views
10

Tôi có một vấn đề, tôi có X <input type="checkbox" /> trong mã của tôi, bây giờ tôi muốn foreach đối tượng này/mảng của nó ra đặt. - nhìn mã của tôi.foreach đối tượng/mảng trong jQuery

$("#denied_seekrs").click(function() 
{ 
    if (!isCheckedById("selectname")) 
    { 
     alert ("Please select at least one event"); 
     return false; 
    } 
    else 
    { 
     alert($("input[@id=selectname]:checked").val()); //submit the form 
    } 
}); 

function isCheckedById(id) 
{ 
    var checked = $("input[@id="+id+"]:checked").length; 
    if (checked == 0) 
    { 
     return false; 
    } 
    else 
    { 
     return true; 
    } 
} 

Khi tôi xuất cảnh báo khi tôi nhận được đối tượng, nhưng nếu tôi chọn hộp kiểm 2 Tôi là giá trị trong hộp kiểm 2 này.

Tôi hy vọng tôi có thể hữu ích và tất cả ở đây hiểu tôi :)

+3

@NeoNmaN: Có cờ spell hữu ích có sẵn cho hầu hết các trình duyệt. Đừng hiểu lầm tôi, nhưng tôi nghĩ bạn nên cài đặt một cái. Câu hỏi này thực sự khó hiểu. – Tomalak

+0

Bạn phải làm rõ câu hỏi của bạn. Bạn muốn nhận được giá trị từ tất cả các hộp đã chọn? Và bạn muốn làm gì với nó? Khi bạn chỉ cần gửi biểu mẫu, như bạn đề cập trong nhận xét bên cạnh cảnh báo, tất cả các giá trị hộp kiểm sẽ được gửi tới máy chủ. –

Trả lời

25

Làm thế nào về

$("#denied_seekrs").click(function() { 
    var checkedInputs = $("input:checked"); 
    var test = ""; 
    $.each(checkedInputs, function(i, val) { 
     test += val.value+","; 
    }); 
    test = test.substring(0,(test.length-1)); 
    alert(test); 
}); 
+1

Để làm cho nó hoạt động đối với mảng chuỗi, tôi đã thay đổi dòng: test + = val.value + ","; để kiểm tra + = val + ","; –

0

Khi tôi bạn đúng, bạn muốn người dùng lựa chọn một hộp kiểm (hoặc là nó một hoặc nhiều?). Điều này sẽ làm điều đó:

$("#denied_seekrs").click(function() 
{ 

    var $checkedInputs = $("input:checked"); 

    if ($checkedInputs.length != 1) 
    { 
     alert ("Please select one event"); 
     return false; 
    } 

    alert($checkedInputs.val()); //submit the form 
}); 

EDIT: Sau khi đọc câu hỏi của bạn một lần nữa, tôi nhận ra rằng các mã trên không trả lời câu hỏi của bạn. Tuy nhiên, ở trên không làm việc và là một phiên bản ngắn hơn nhiều của giải pháp của bạn. Có thể bạn muốn sử dụng nó thay thế. Để trả lời câu hỏi của bạn, bạn có thể báo giá trị của tất cả các hộp kiểm tra như thế này:

Thay đổi này:

alert($checkedInputs.val()); //submit the form 

này:

var values = ""; 
    $checkedInputs.each(function(){ 
     values += $(this).val() + " "; 
    }); 

    alert(values); 
+0

không có tác phẩm nào không hoạt động,:/chỉ trả lại giá trị đầu tiên. – ParisNakitaKejser

+0

@NeoNmaN: Có, trước tiên tôi đã nhận được câu hỏi của bạn sai. Tôi vừa thêm một ví dụ để có được tất cả các giá trị trong cảnh báo. –

3

Tôi không chắc chắn chính xác những gì bạn' đang tìm kiếm, nhưng tôi đoán rằng jQuery.each() method sẽ giúp ích. Bạn có thể sử dụng nó để lặp qua mảng, đối tượng và hơn thế nữa.

var arr = [ "one", "two", "three", "four", "five" ]; 

jQuery.each(arr, function() { 
    $("#" + this).text("My id is " + this + "."); 
    return (this != "four"); // will stop running to skip "five" 
}); 
2

thế nào về một cái gì đó như thế này:

jQuery.each(checked, function() { 
     $(checked + this).text("My id is " + this + "."); 

    }); 
+0

http://docs.jquery.com/Utilities/jQuery.each – william

+0

mabye bạn nên đổi tên kiểm tra thành tên khác – william

2

Nó có thể được rằng - cuối cùng - bạn đang tìm kiếm $.serializeArray() hoặc $.serialize()?

Nếu không, thì có lẽ đây là giúp bạn:

$("#denied_seekrs").click(function() 
{ 
    if (!isCheckedById("selectname")) 
    { 
     alert ("Please select at least one event"); 
     return false; 
    } 
    else 
    { 
     // prepare array of values 
     var values = []; 

     // prepare list of checked checkboxes 
     var $checkboxes = $("input[@id=selectname]:checked"); 

     // push each individual value into the array 
     $checkboxes.each(function() { values.push($(this).val()); }); 

     // debug output 
     alert(values.join("\n")); 
     //submit the form 
    } 
}); 
Các vấn đề liên quan