2010-09-06 37 views
3

我怎样才能得到这个复选框的列表被添加到一个div之前,他们的选择状态,所以如果他们被选中,他们应该被添加到div,如果不是他们被删除该列表如果未选中。jQuery存储复选框的值在div

<div id="selected-people"></div> 

<input type="checkbox" value="45" id="Jamie" /> 
<input type="checkbox" value="46" id="Ethan" /> 
<input type="checkbox" value="47" id="James" /> 
<input type="checkbox" value="48" id="Jamie" /> 
<input type="checkbox" value="49" id="Darren" /> 
<input type="checkbox" value="50" id="Danny" /> 
<input type="checkbox" value="51" id="Charles" /> 
<input type="checkbox" value="52" id="Charlotte" /> 
<input type="checkbox" value="53" id="Natasha" /> 

是否可以提取ID名称为存储的值,所以id的值将被添加到div,而不是价值 - 价值需要有号码,以便将其添加到数据库供以后使用。

我看着这里,有一个复选框和一个textarea,我改变了一些部分,甚至没有工作。

function storeuser() 
{   
    var users = []; 

    $('input[type=checkbox]:checked').each(function() 
    { 
     users.push($(this).val()); 
    }); 

    $('#selected-people').html(users) 
} 

$(function() 
{ 
    $('input[type=checkbox]').click(storeuser); 
    storeuser(); 
}); 
+0

我真的不明白你在问什么。选择项目时,是否要将ID或VALUE添加到DIV?你在“选择状态之前”是什么意思?另外,你可以发布你尝试过的不工作? – Chuck 2010-09-06 00:29:12

+0

添加了我在stackoverflow上看到的代码,更改了它,但根本不起作用。该ID应该存储在div中。 – MacMac 2010-09-06 00:32:25

+1

你有两个与Jamie相同的ID。这不是有效的HTML,可能会给您带来麻烦。 – user113716 2010-09-06 00:45:33

回答

6

所以,你想保持更新DIV只要单击一个复选框?这听起来正确吗?

http://jsfiddle.net/HBXvy/

var $checkboxes; 

function storeuser() {   
    var users = $checkboxes.map(function() { 
     if(this.checked) return this.id; 
    }).get().join(','); 
    $('#selected-people').html(users); 
} 

$(function() { 
    $checkboxes = $('input:checkbox').change(storeuser); 
});​ 
+0

完美的男人。谢谢。 – MacMac 2010-09-06 00:56:21

+1

@YouBook - 不客气。我改变了一点。使用'.join(',')'而不是'.toString()'。现在让它更高效一点。 – user113716 2010-09-06 01:00:44

2

假设在页面上只有这些输入控件,我可以编写下面的代码。

$.each($('input'), function(index, value) { 
    $('selected-people').append($(value).attr('id')); 
}); 

编辑由于更多介绍


$(document).ready(function() { 
    $.each($('input'), function(index, value) { 
     $(value).bind('click', function() { 
      $('selected-people').append($(value).attr('id')); 
     }); 
    }); 
}); 

注:我每个元素的点击事件绑定到一个函数。如果这样做不起作用,或者它对你应该做的事不好,那就把它改为“改变”事件。

+0

好的。那很好。唯一的问题是用户列表已经存储在div中,当他们需要存储点击时。 – MacMac 2010-09-06 00:41:16

+0

对不起?我没有完整地描述你的描述。 – Neutralizer 2010-09-06 00:43:41

+0

我的意思是,任何东西都不应该在div里面,除非我点击复选框 - 选中的复选框将被添加到div中,但整个列表已被添加到div中... – MacMac 2010-09-06 00:45:52

0

变化:

users.push($(this).val()); 

到:

users.push($(this).attr('id')); 
0

这是用于向逗号分隔值绑定到输入复选框列表

$(".chkboxes").val("1,2,3,4,5,6".split(',')); 

它将根据在分隔逗号给定的字符串值绑定的复选框。