2011-08-26 99 views
1

我有這樣的代碼:複選框 - 檢查什麼? jQuery的

<input type="checkbox" id="checkbox" value="11"> 
<input type="checkbox" id="checkbox" value="10"> 

<div id="log"></div> 

$("input").click(function() { 
    $("#log").html($(":checked").val() + " is checked!"); 
}); 

如果我開始通過檢查的第一個複選框,那麼接下來,它將增加:11進行檢查。

我該怎麼做,它需要所有提交的複選框值 - 如: 11,10,檢查。

,並有可能用PHP提取這些值,所以它看起來是這樣的:沒有 「」

UPDATE:

$('input[type="submit"]').click(function() { 
    var kolort = $('input[type="checkbox"]:checked').val(); 
    var output = $(this).text() + ", " + kolort; 

    /* 
    $('input[type="checkbox"]:checked').each(function(index) { 
    output += $(this).text() + ", "; 
    });*/ 

    alert(output + "is checked!"); 
}); 

我現在都沒有了。雖然,它只是打印出其中一個值而不是兩個值。 我怎麼能這樣做,它從每個輸入中取值?

+3

爲什麼不給你單獨的ID爲複選框! – zod

回答

1

您可以使用jQuery的.each() API:

$('input[type="submit"]').click(function() { 
    var output = ''; 

    $('input[type="checkbox"]:checked').each(function(index) { 
    output += $(this).val() + ", "; 
    }); 

    alert(output + "is checked!"); 
}); 

測試頁:http://pastebin.com/LVuLUthB

作爲去除逗號,在PHP處理時不會有逗號。複選框以數組形式發送。你想要做的是:

<input type="checkbox" name="checkbox[]" value="11"> 
<input type="checkbox" name="checkbox[]" value="10"> 

然後在PHP:

echo implode(', ', $_POST['checkbox']) . ' are checked!'; 
+0

此代碼: '$( '輸入[類型= 「提交」]')點擊(函數(){ VAR輸出= ''; $( '輸入[類型= 「複選框」]:檢查' )。每個(函數(指數){ 輸出+ = $(本)的.text()+ 「」 } 警報(輸出+ 「被選中!」); }); ' 給我意外令牌)錯誤。 –

+0

對不起,白癡語法錯誤 - 忘了關閉括號。更新的代碼。 – 2011-08-26 17:21:35

+0

現在工作。雖然,它只是說「,被檢查」。它不會提供複選框的值。 –

0

看看jQuery .each()。以下將遍歷所有選中的複選框。正如@zod在他的評論中所說的,ID是唯一的,請改爲使用類。

$("input").click(function() { 
    $(":checked").each(function() { 
     $("#log").html($(this).val() + " is checked!"); 
    }); 
}); 
0

.val()總是會返回第一個匹配元素的值:http://api.jquery.com/val/

嘗試這種情況:

$("input").click(function() { 
    $(":checked").each(function() { 
     $("#log").html(this.val() + " is checked!"); 
    }) 

});

1
  1. 兩個控件不能有相同的ID。

  2. 在修復#1後,很容易使用.val()和/或將返回的jQuery集合視爲有序序列。由於#1是固定的,因此需要基於類型或名稱的選擇器等。

  3. 該帖子中的代碼不與PHP進行交互。考慮修改問題/代碼。請注意,<input type="checkbox" name="choice[]">(注意名稱)可能對於在服務器上作爲集合進行處理很有用。

快樂編碼。

0

像@zod說,你需要在你的複選框不同的ID。另外,你需要一個循環來處理所有的複選框。試試這個:

var total = ""; $(":checked").each(function(){ if(total != "") total = total + ","; total = total + $(this).val(); }); $("#log").html(total + " is checked!");