我有一个带有一堆复选框的表单,以及一个包含CSV数据的隐藏字段。基本上,我需要根据隐藏字段的值勾选复选框:
<form>
<input type="checkbox" id="01" name="01" />
<input type="checkbox" id="02" name="02" />
<input type="checkbox" id="03" name="03" />
<input type="hidden" value="03,01," />
</form>
因此,在上面的示例中,需要在页面加载完成后勾选复选框01和03。我还需要确保当复选框的值发生变化时,隐藏的CSV字段也会发生变化(尽管这可能在表单提交时也可以完成?)。
我有限的jQuery知识让我无处可去,任何帮助都会非常感激。 (我知道其中一些最好是在服务器端完成,但除了javascript之外我无法访问任何内容。)
以下答案完成了我想要的大部分内容。我认为使用创建的变量,应该可以在表单提交时重新填充CSV字段。即,使用selected_ids将复选框的ID添加到CSV的末尾(如果它们尚未存在)。可以这样做吗?
答案 0 :(得分:1)
var csvValue = $('#csv-input').val();
var selected_ids = csvValue.split(',');
for (var i = 0; i < selected_ids.length; i++)
{
var selected_id = selected_ids[i];
$('#' + selected_id).attr('checked', 'checked');
}
答案 1 :(得分:0)
$(':checkbox').bind('change', function(event){
if (this.checked == true){
// add to hidden field
var tempIdStr = $('#cvs-input').val();
// if not in hidden value already
if (tempIdStr.indexOf(this.id) > -1){
tempIdStr += "id,"; // or ", id" depending on how you are seperating the ids
$('#cvs-input').val(tempIdStr);
}
} else {
// remove from hidden field
var tempIds = $('#cvs-input').val().split(',');
var index = tempIds.indexOf(this.id);
if (index > -1){
tempIds.splice(index, 1);
$('#cvs-input').val(tempIds.join(',');
}
});