传递复选框的值

时间:2015-06-29 18:05:26

标签: jquery

我有以下checboxes:

<section class="col col-12">
    <label class="input">Templates</label>

    <input type="checkbox" name="Status" class="Status" value="'Listing Task'" id="Status1" title="445" checked>&nbsp; Listing Task
    <br> 

    <input type="checkbox" name="Status" class="Status" value="'Pending Task'" id="Status2" title="445" >&nbsp; Pending Task
    <br> 

    <input type="checkbox" name="Status" class="Status" value="'Test Template'" id="Status3" title="445" >&nbsp; Test Template
    <br> 

</section>

当我得到复选框的值时,我正在执行form.serialize(),这会带来复选框值:

价值来自:

Status='Listing+Task'&Status='Test+Template' 

我希望它像:'Listing Task','Test Template'

2 个答案:

答案 0 :(得分:0)

Form.serialise将表单转换为query string以供URL处理。它通常用于使用URL中的数据发送ajax请求,因此使用查询字符串格式。

在您的情况下,您最好将元素作为JQuery集合处理并手动构建更正的格式化列表,如下所示:

var list = ''

var processListElem = function() {
  list += $(this).val() + ',';    
}

$('.Status').each(processListElem);

each()获取集合中的所有元素(在本例中为所有.Status元素),并在函数processListElem上执行操作。

有关工作示例,请参阅this JSFiddle

PS,我希望您想要删除最后一个逗号的逻辑并响应复选框的选中状态,但我想隔离问题中的确切问题。

答案 1 :(得分:0)

只需在需要时从所有输入中获取值:

var list = '';
$('input:checkbox').each(function () {
    if(this.checked){
        list += (list == '' ? '' : ', ') + $(this).val();
    }
 });
alert(list);

这是working example