2010-09-06 35 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(',')); 

它將根據在分隔逗號給定的字符串值綁定的複選框。