0

我有一个站点,其上的链接(hrefs)很少,每个链接都显示一组输入 type=checkbox (从后台生成),当您单击它显示的链接时,可以说 10 个输入,其他那些变成显示:无;(在加载时,默认情况下只有一组初始复选框)并且使用我制作的 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();

    }

我遇到的问题如下:当页面加载并且视图上有那些初始复选框(其他的在显示中:无;),一切正常,我得到一个复选框的名称和值,但只要我单击一个链接,它会设置显示其他复选框并将以前的复选框显示:无;,当我再次单击该按钮时,它不会获取选中复选框的名称和/或值,而是显示所有先前的复选框(选中和未选中,它们的整个列表,之前和当前显示的,但完全忽略是否选中或未选中任何内容)。所以我认为我创建了一个对象,它保留了这些值,不会覆盖它们,而是向以前添加新值并且完全困惑为什么它突然忽略过滤器,这就是为什么我试图通过删除来“清空”对象window.obj;,但它没有做任何事情。那么这里有什么问题呢?如果对我所写的内容有任何一般性的提示,将很高兴听到它们:) 谢谢!

4

2 回答 2

0

隐藏时不发送输入。它是 HTML 标准的一部分。表单发送的输入仅可见对象。

childCount 未定义。

于 2013-07-01T16:59:00.787 回答
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);
        } ...

在您在标记中为复选框提供一些数据 ID 的条件下,并且该数据 ID 不是动态创建的。这样,您将正确存储和发送所有复选框以及您可能拥有的任何其他数据,这只是您可以尝试的示例。

当我需要存储多个选中/未选中的选项并通过 AJAX 发送它们时,我使用了类似的方法。

让我知道这是否对您有帮助。

于 2013-07-01T20:08:55.947 回答