我的页面中有多个复选框。我想检查它的值。
这是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);
}
答案 0 :(得分:1)
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
答案 1 :(得分:0)
试试这段代码
var collect='';
$('input:checked').each(function(i,e){
collect+=(collect===''? $(e).attr('name')+'='+$(e).val():','+$(e).attr('name')+'='+$(e).val());
alert(collect);
})
答案 2 :(得分:0)
我刚刚创建了一个fiddle。在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);
答案 3 :(得分:0)
这是一个jsfiddle snippet,它返回所有已检查的输入。 但是有一个问题,当你将你的id存储在value-attribute中时,为什么要拆分你的id-attribute?无论如何,希望这对你有用!
function updateTicketAction() {
var allUpdatedVendorTickets = $('.chkTicket:checked');
var sFinalUpdateList = '';
allUpdatedVendorTickets.each(function () {
sFinalUpdateList += ((sFinalUpdateList == '') ? '' : '|') + $(this).val();
});
alert(sFinalUpdateList);
}
答案 4 :(得分:0)
或者您可以使用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);
答案 5 :(得分:0)
您的过滤功能有误。
this.value != $input.is(':unchecked');
您将.value
属性(字符串)与.is
jQuery方法(boolean)的返回值进行比较。它类似于:
'value' != !true //checked
'value' != !false //unchecked
两者都将始终返回true
- 除非value
是0
或空字符串计算为假值且表达式的右侧评估为false
, !=
不同的运算符将返回false
。
因此,您的filter
回调根本不会过滤任何内容,除了取出值checked
的{{1}}框或没有值(这是无意的)。
您可以使用:checked
选择器避免使用0
功能:
filter
现在你将拥有一个仅包含已检查var allUpdatedVendorTickets = $('.chkTicket:checked');
的jQuery对象,更好。
接下来,你正在使用字符串。
.chkTicket
这就是你的功能所产生的。每次需要操作这些结果时,您都必须将字符串拆分为"189310,189310|189311,189311"
,从而创建一个新数组。将它存储为数组要好得多。
|
假设您的键和值始终与示例中的相同,您也应该只存储一次。
var sFinalUpdateList = [];
这将生成一个更加干净和可维护的数组,只有复选框的值:
allUpdatedVendorTickets.each(function() {
sFinalUpdateList.push(this.value);
});
您可以通过将sFinalUpdateList =>
[0] -> "189310"
[1] -> "189311"
附加到这些值来获取其ID。