2011-08-26 86 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!");