我有以下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> Listing Task
<br>
<input type="checkbox" name="Status" class="Status" value="'Pending Task'" id="Status2" title="445" > Pending Task
<br>
<input type="checkbox" name="Status" class="Status" value="'Test Template'" id="Status3" title="445" > Test Template
<br>
</section>
当我得到复选框的值时,我正在执行form.serialize(),这会带来复选框值:
价值来自:
Status='Listing+Task'&Status='Test+Template'
我希望它像:'Listing Task','Test Template'
答案 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);