2016-04-04 48 views
-1

我有我的表与复选框的列表。如果复选框被选中,则将值设置为0,如果未选中,则值为-1。我当前的代码只会在检查时提交复选框。我想在每次点击保存按钮时提交表单中的所有复选框。有什么办法可以做到吗?这里是我的代码:如何提交表单中的所有复选框字段?

HTML:

<input type="checkbox" name="user" value="~(user_ID)" class="chkBlock" /> 

JQuery的:

//This code switch value based on if check box is checked or not 
$j('.chkBlock').click(function(){ 
    $j(this).val(this.checked ? 0:-1); 
}); 

,并基于该值从DB这个代码集复选框状态:

$j(document).ready(function() { 
    $j('input.chkBlock[value="0"]').prop("checked", true); 
    $j('input.chkBlock[value="-1"]').prop("checked", false); 
    $j('input.chkBlock[value=""]').prop("checked", false); 
}); 

我现在代码仅在检查时提交值。

+1

这是一个复选框的工作原理。如果仅在检查时才给出值。如果您不使用JavaScript,也会发生这种情况。所以实际上你甚至不需要检查0或-1。值的存在会告诉你它是否被检查。拥抱这种行为,而不是试图解决它。 – GolezTrol

+0

因此,如果我的复选框未选中时必须设置不同的值,我该如何避免变通?如果我无法提交未经检查的复选框,我将如何将该值保存在数据库中?任何其他方法,你会建议? –

+2

可能重复的[发布未选中的复选框](http://stackoverflow.com/questions/1809494/post-the-checkboxes-that-are-unchecked) – showdev

回答

0

虽然这不是您的帖子的确切答案。这个问题以不同形式出现过多次。到目前为止,下面的链接中的方法似乎是一个体面的解决方案。

Post the checkboxes that are unchecked

+1

如果问题在其他地方回答,请将其标记为重复。如果你不能忍受它,直到你有足够的代表。发布链接到其他问题的答案是不正确的。 – GolezTrol

+0

对不起,我是新来的,我没有足够的代表标记为重复。只是想帮助这个人。我本来可以复制另一篇文章的答案,但我并不觉得这是正确的。你能把它标记为重复的吗? – peso

1
var boxes=new Array(); 
$(".chkBlock").each(
function() 
{ 
    if($(this).prop("checked")) 
    { 
     boxes.push($(this).prop("name")+"[]="+$(this).val()); 
    } 
    else 
    { 
     boxes.push($(this).prop("name")+"[]=0"); 
    } 
}); 
console.log(boxes.join("&")); 

我写上面的未经测试 - 我去睡觉,但想我会给你一些精神食粮。

我相信我上面写的代码会循环所有带有类chkBlock的标记,如果选中的属性为true,那么它会附加框的名称,双方括号,等号和框。

如果选中的不是真的,那么检查仍然通过,但给定值为零。

编辑:[]意味着复选框作为数组发送到服务器。检查控制台日志以获取示例数据。

我希望能够帮助你...或者至少,我希望它不会混淆。

+0

感谢这个例子。我认为这可以帮助我的情况。 –

相关问题