我有一个网站,其中有很少的链接(hrefs),每个链接都显示一组输入type = checkbox(从后端生成),当你点击它显示的链接时,让我们说10输入,其他的变为display:none;(在加载时默认情况下只有一组初始的复选框)并且我已经制作了jquery,所以你可以切换你想看的复选框。
现在我需要创建一个对象,我可以将所有选中的内容,它们的名称和值放在一起,所以当我点击一个按钮时,我可以通过ajax将它发送到后端。
调用ajax的函数“并获取值和名称是”:
function Bada() {
var obj = $('.custom input[type="checkbox"]');
var checkedCount = obj.filter(':checked').length;
var checkedInputs = obj.filter(':checked');
console.log('The console is working');
for(check in checkedInputs){
console.log(checkedInputs[check].name);
console.log(checkedInputs[check].value);
}
delete window.checkedInputs;
delete window.obj;
$.ajax({
url: "/getItems",
type: "post",
data : { form: childCount, count: checkedCount },
success: function(responseText){
alert('works');
}
})
//unfocus the button after the call to server, otherwise the marker stays in the text of the button as if that text is selected
$('.button').blur();
}
我遇到的问题如下: 当页面加载并且视图上有那些初始复选框(显示中的其他一个:无;),一切正常,我得到一个复选框和值的名称, 但是,当我点击一个链接时,它会立即显示其他一组复选框,并将之前的复选框设置为display:none;,当我再次单击该按钮时,而不是获取已选中复选框的名称和/或值显示所有以前的复选框(已选中和未选中,它们的整个列表,以前是,当前显示的那些,但如果检查或取消选中任何内容,则完全忽略)。 所以我认为我创建了一个对象,它保留了这些值,不会覆盖它们,但是为之前添加了新值,并且完全不知道为什么突然忽略了过滤器,这就是为什么我试图通过删除来“清空”对象window.obj;,但它没有做任何事情。 那么这里有什么问题?如果对我写的内容有任何一般的提示,很高兴听到他们:) 谢谢!
答案 0 :(得分:0)
隐藏时未发送输入。它是HTML标准的一部分。 表单仅发送输入可见对象。
未定义childCount。
答案 1 :(得分:0)
您可以尝试将所有复选框推送到数组中,然后将它们存储到如下变量中:
function Bada() {
var checkboxes= [];
$('.checkBoxClass').each(function(index){
checkboxArray.push($(this).data('id'));
});
var together = checkBoxArray.join();
$.ajax({
url : '/getItems',
data : {
'someproperty' : together
},
success : function(response) {
console.log(response);
} ...
条件是您在复选框中为标记提供了一些data-id,并且该data-id不是动态创建的。这样,您将获得存储并正确发送的所有复选框以及您可能拥有的任何其他数据,这里只是您可以尝试的示例。
当我需要存储多个已检查/未检查的选项并通过AJAX发送它时,我使用了类似的方法。
如果这对你有帮助,请告诉我。