Javascript 如何使用JQuery迭代枚举的检查列表(复选框)?
如何使用JQuery迭代枚举的检查列表(复选框) 您好,我有以下复选列表(包含两个复选框,其中有两个不同的电子邮件地址): 然而,我现在有一个列举的清单。。。只需要附加/连接索引号(我将其存储在一个隐藏字段中,并且始终可以获得 正确),但似乎看不到如何传入第二个迭代器的Javascript 如何使用JQuery迭代枚举的检查列表(复选框)?,javascript,jquery,checkbox,jquery-events,Javascript,Jquery,Checkbox,Jquery Events,如何使用JQuery迭代枚举的检查列表(复选框) 您好,我有以下复选列表(包含两个复选框,其中有两个不同的电子邮件地址): 然而,我现在有一个列举的清单。。。只需要附加/连接索引号(我将其存储在一个隐藏字段中,并且始终可以获得 正确),但似乎看不到如何传入第二个迭代器的输入:checkbox:checked 以下是选中列表的HTML源代码: <div id="mycomponent.comment0.replyToRecipientsCheckList"
输入:checkbox:checked
以下是选中列表的HTML源代码:
<div id="mycomponent.comment0.replyToRecipientsCheckList"
class="checkList"
onclick="selectIndividualRecipients()">
<ul id="mycomponentcomment0.replyToRecipientsCheckList_ul">
<li>
<label for="mycomponent.comment0.replyToRecipientsCheckList_0"
class="checkListLabel">
<input type="checkbox"
value="johndoe1@example.com"
id="mycomponent.comment0.replyToRecipientsCheckList_0"
name="mycomponent.comment0.replyToRecipientsCheckList"/>
johndoe1@example.com
</label>
</li>
<li>
<label for="mycomponent.comment0.replyToRecipientsCheckList_1"
class="checkListLabel">
<input type="checkbox"
value="johndoe2@example.com"
id="mycomponent.comment0.replyToRecipientsCheckList_1"
name="mycomponent.comment0.replyToRecipientsCheckList"/>
johndoe2@example.com
</label>
</li>
</ul>
</div>
浏览器显示($test)。each()
抛出一个未捕获的异常,这是不允许的
我可能做错了什么?您是否尝试过如下更改您的var测试声明
var test = '#' + event.attr('id') + ' input:checkbox:checked';
注意输入前的空格和复选框,而不是复选框。可能有一种更简单的方法:
$('div.checkList').delegate('input', 'change', function() {
textField.value = $('div.checkList ul li input:checked').map(function() {
return $(this).val();
}).get().join('; ');
});
可能无法解决问题,但我认为您需要关闭
每个(函数{
在警报('emails='+emails)行之后)
我想我确实试过了…请继续关注。谢谢rkw,但我需要它来迭代mycomponentcomment0.ReplyRecipientScheckList_ul而不是emailCheckListId。第一个HTML和JavaScript用于非枚举ul列表。这种情况是枚举ul列表,即mycomponentcomment0.ReplyRecipientScheckList_ul。我需要访问它s行项目。
// Uses an event listener which picks individual contacts
// and populates input field.
function selectIndividualRecipients() {
var checkListPrefix = 'mycomponent.comment';
var index = document.getElementById("commentHiddenField").value;
var checkListPostfix = '.replyToRecipientsCheckList_ul';
var event = checkListPrefix + index + checkListPostfix;
$(event).change(function() {
// Declare array
var emails = [];
// Iterate through each array and put email addresses into array
// THIS DOESN'T SEEM TO BE WORKING:
var test = '#' + event.attr('id') + 'input:check:checked';
$(test).each(function() {
alert('inside iterator');
alert('this.val: ' + $(this).val());
emails.push($(this).val());
alert('emails = ' + emails);
});
// Assign variable to Reply To: text field by obtaining element's id.
var textField = document.getElementById(indexedReplyTextField);
// Add / Remove array from text field
textField.value = emails;
}
var test = '#' + event.attr('id') + ' input:checkbox:checked';
$('div.checkList').delegate('input', 'change', function() {
textField.value = $('div.checkList ul li input:checked').map(function() {
return $(this).val();
}).get().join('; ');
});