如果在jQuery中选中,则返回多个复选框值
Return Multiple CheckBox Values if Checked in jQuery
我的页面中有多个复选框。如果选中,我想检索它的值。
这是HTML代码。。
<input name="ctl1189" type="checkbox" id="chkTicket_189310" class=" chkTicket" value="189310">
<input name="ctl1190" type="checkbox" id="chkTicket_189311" class=" chkTicket" value="189311">
等等…
Javascript代码:
function updateTicketAction() {
var allUpdatedVendorTickets = $('.chkTicket').filter(function() { return this.value != $input.is(':unchecked'); });
var sFinalUpdateList = '';
allUpdatedVendorTickets.each(function() {
var ids = $(this).attr('id').split('_')[1];
sFinalUpdateList += ((sFinalUpdateList == '') ? '' : '|') + ids + ',' + $(this).val();
});
alert(sFinalUpdateList);
}
function updateTicketAction() {
var sFinalUpdateList = '';
$("input.chkTicket:checked").each(
function() {
var ids = $(this).attr('id').split('_');
var id = ids[1];
sFinalUpdateList += ((sFinalUpdateList == '') ? '' : '|') + id + ',' + $(this).val();
}
);
alert(sFinalUpdateList);
}
http://jquery-howto.blogspot.com/2008/12/how-to-check-if-checkbox-is-checked.html
我刚刚创建了一个小提琴。在JavaScript控制台中查找生成的对象,然后可以对其进行进一步处理。
代码:
var checkedCheckboxes = $('.chkTicket:checked'),
results = {};
checkedCheckboxes.each(function () {
var key = $(this).attr('id').split('_')[1];
results[key] = $(this).val();
});
function alertResults(results) {
var text = '', sep = '';
$.each(results, function (key, value) {
text += sep + key + '=' + value;
sep = '|';
});
alert(text);
}
alertResults(results);
console.log(results);
尝试此代码
var collect='';
$('input:checked').each(function(i,e){
collect+=(collect===''? $(e).attr('name')+'='+$(e).val():','+$(e).attr('name')+'='+$(e).val());
alert(collect);
})
这里有一个jsfiddle片段,它返回所有检查的输入。。不过,有一个问题是,当您的id存储在value属性中时,为什么要拆分id属性?无论如何,希望这对你有用!
function updateTicketAction() {
var allUpdatedVendorTickets = $('.chkTicket:checked');
var sFinalUpdateList = '';
allUpdatedVendorTickets.each(function () {
sFinalUpdateList += ((sFinalUpdateList == '') ? '' : '|') + $(this).val();
});
alert(sFinalUpdateList);
}
或者您可以使用map():
var el = $('input[type=checkbox]:checked').map(function(i,e){
var id = $(e).attr('id').replace('chkTicket_', '');
var val = $(e).val();
return {
'id' : id,
'value' : val
}
});
console.log(el[0].id);
您的筛选函数错误。
this.value != $input.is(':unchecked');
您正在将.value
属性(字符串)与.is
jQuery方法的返回值(布尔值)进行比较。类似于:
'value' != !true //checked
'value' != !false //unchecked
两者都将始终返回true
,除非value
是0
或一个空字符串,其计算结果为错误值,并且表达式的右侧计算结果为false
,对于!=
不同的运算符将返回false
。
因此,您的filter
的回调根本不过滤任何内容,除了去掉值为0
或没有值的checked
框(这是无意的)。
使用:checked
选择器可以避免使用filter
函数:
var allUpdatedVendorTickets = $('.chkTicket:checked');
现在,您将拥有一个只包含选中的.chkTicket
的jQuery对象,这要好得多。
接下来,你对字符串的使用不当。
"189310,189310|189311,189311"
这就是你的函数所产生的。每次需要处理这些结果时,都必须在|
处拆分字符串,从而创建一个新的数组。最好已经将其存储为数组。
var sFinalUpdateList = [];
假设您的键和值始终与示例中的相同,那么也应该只存储一次。
allUpdatedVendorTickets.each(function() {
sFinalUpdateList.push(this.value);
});
这将生成一个更干净、更可维护的数组,其中只有复选框的值:
sFinalUpdateList =>
[0] -> "189310"
[1] -> "189311"
您可以通过将chkTicket_
附加到这些值来获得它们的ID。
jsFiddle
- 使用jQuery只返回选中复选框后的第一个表单元格值
- 选择一个从 mysql 返回选中/未选中复选框的对象
- Yui Get 复选框返回数组而不是布尔值
- html5复选框返回“;关于“;值,而不是我设置的值
- Javascript使用each()为复选框返回正确的值
- 如果在jQuery中选中,则返回多个复选框值
- 当用户检索表单时返回选中的复选框(Coldfusion)
- 返回:使用is()选中复选框值
- 如何使复选框项目返回超链接
- 在jquery或javascript或angular中单击单选按钮或复选框后返回呼叫
- 在复选框的索引中返回 1
- HTML 复选框返回值
- HTML 复选框 Click() 使用 jQuery 返回 FALSE 或 TRUE,而不是 READONLY 或 DI
- 为什么复选框总是返回相同的值
- Javascript - 从复选框返回值
- Struts2页面未从复选框返回正确的值
- 在ng-click中,复选框返回false而不是true
- Jquery复选框返回一些值
- 根据选中的复选框返回一个字符串
- 为什么我的复选框返回错误的状态