只有第一个复选框值被添加到我的表中
Only the first checkbox value is being added to my table
无论我在复选框列表中选中了多少项,当我查看要添加行的表时,只有选中的第一个复选框的值会添加到我的表中。我试图遍历每个复选框并获取每个复选框的值以插入,但它似乎不起作用。知道我在哪里搞砸了吗?
在我的jquery中,我正在运行一个if语句,以防止在取消选中框时向表中添加未定义项。
下面是一个jsfiddle演示我正在做的事情:http://jsfiddle.net/22L9x006/
$(document).on('click', 'input:checkbox[name=certsToValid]', function() {
$newTableRow = '<tr><td><p>' + $('[name=certsToValid]:checked').val() + '</p></td><td><input type="text" placeholder="Credential #..." class="certInput" /></td><td><p>$5.00</p></td><td><div class="removeRow"></div></td></tr>';
$(this).attr('value');
if($.each($('input:checkbox[name=certsToValid]').is(':checked')) && $(this) != undefined) {
$('.certSelections').append($newTableRow);
}
});
我刚刚调整了您的Fiddle,以便将带有单击复选框值的选项添加到表中。调整是为了改变
$newTableRow = '<tr><td><p>' + $('[name=certsToValid]:checked').val() + ...
进入
$newTableRow = '<tr><td><p>' + $(this).val() + ...
这不是一个完整的解决方案,因为我猜你想在取消选中复选框时删除一行,目前每次点击复选框都会添加一个新行,但我认为你可以从这里开始解决。
目前尚不清楚您的目标是什么,但编写代码的正确方法是:
$(document).on('change', ':checkbox[name=certsToValid]', function() {
$(this).filter(':checked').each(function() {
$newTableRow = '<tr><td><p>' + this.value + '</p></td><td><input type="text" placeholder="Credential #..." class="certInput" /></td><td><p>$5.00</p></td><td><div class="removeRow">REMOVE</div></td></tr>';
$('p:contains(' + this.value + ')','.certSelections tbody').length ||
$('.certSelections tbody').append($newTableRow);
});
});
$(document).on('click', 'div.removeRow', function() {
$(this).closest('tr').remove();
});
演示
如果你能澄清你试图实现的目标,那么这个答案可以得到改进,以更好地指导你实现目标。
这里是PeterKA答案的扩展。代码与他的完全相同。我只是添加了一种"筛选"来避免重复的行。
$(document).on('change', ':checkbox[name=certsToValid]', function () {
$(this).filter(':checked').each(function () {
$newTableRow = '<tr><td><p>' + this.value + '</p></td><td><input type="text" placeholder="Credential #..." class="certInput" /></td><td><p>$5.00</p></td><td><div class="removeRow">REMOVE</div></td></tr>';
var optionValue = this.value;
var added = false;
$('.certSelections td:first-child p').each(function (index) {
if ($(this).text() === optionValue) {
added = true;
}
});
//only add if it's not found in the table
if (!added) {
$('.certSelections tbody').append($newTableRow);
}
});
});
Fiddle
相关文章:
- 将输入字段中的文本提交到我的数据库,同时将其添加到我的列表中
- JQuery添加元素需要在我的js之前再次添加JQuery脚本
- 将当前时间添加到我的页面上的特定部分
- 将淡入淡出添加到“我的身体背景滑块”
- 可以Resharper在我的javascript函数声明中添加分号
- 如何将JavaScript库添加到我的C#MVC项目中
- 更新数据,而不是用javascript和jquery将其添加到我的表中
- 如何为我的分页添加格式
- 在我的网站上以纯文本形式添加最新推文
- 在PDF中查看时,我的行中出现换行.(添加减号时)
- 当我的表单中已经有一个操作时添加JavaScript
- 有没有一种方法可以生成Braintree令牌,而不必向我的服务器添加PHP脚本
- 只需添加一个'允许跨来源请求'到我的节点应用程序工作
- 如何将淡出图像添加到我的Django页面
- 为什么我的JS不添加一个HTML类
- 在我的上下文中添加对象的动态方法
- 如何使用 javascript 向我的 html 添加内容而不擦除整个页面
- 将音频添加到我的网页
- 我的添加到书签javascript获胜't单击时加载
- 页面加载完成,然后我的添加类消失了