【问题标题】:jQuery serialize checkboxes that are dynamically created from MySQLjQuery 序列化从 MySQL 动态创建的复选框
【发布时间】:2012-11-05 02:04:00
【问题描述】:

我从PHP 循环中的MySQL 值动态地在HTML 表中创建行。每行代表MySQL 中的一行,并由一个id 标识。

我希望能够在每一行上都有一个<input type='checkbox'>,并在底行有一个“删除选定的行”按钮。

我的问题是我应该如何POST 选中的复选框以及如何在PHP- 文件中识别它们。

我有这个脚本到serialize <input type='text'> 字段:

function serealizeInputs (input)
    {
        var array = [];
        input.each(function(){ array.push($(this).val()) });
        return array;
    }
var value = serealizeInputs($('.my_input_field'));

如何为复选框编写类似的内容?

如您所见,我对此很陌生。如果您需要查看更多代码,请告诉我。

【问题讨论】:

    标签: php jquery mysql serialization checkbox


    【解决方案1】:

    您可以使用prop attribute 来检查复选框是否被选中。这是live demo

    function serializeCheckboxes(input)
        {
            var array = [];
            input.each(function(){ 
                if($(this).prop("checked"))
                {
                    array.push($(this).attr("id"))  
                }                
            });
            alert(array);
            return array;
    
        }​
    

    【讨论】:

    • 您好,感谢您的代码。它似乎接近我想要的!但是,当填充复选框时,它们没有“选中”属性。有没有办法识别用户选中了哪些复选框?
    • 它已经检查了用户是否检查过。注意如果你使用的是旧版本的 jQuery(1.6),你不能使用 prop 属性。你可以试试 "$(this).attr("checked")"
    • 为什么不直接使用:checked 选择器? api.jquery.com/checked-selector
    • 是的,definetely :checked 选择器会更好。
    • @MehmetCanKamar 复选框在创建时未选中,然后用户应该选择是否选中它们,并根据值发送一个序列化的字符串以显示已选中的框。
    【解决方案2】:

    要检索所有选中的框,请使用:checked 选择器http://api.jquery.com/checked-selector/


    管理此问题的常用技术是使用数组运算符[] 将要删除的每一行的主键作为数组发布

    <?php foreach ($rows as $id => $row) : ?>
        <input type="checkbox" name="to_delete[]" value="<?php echo $id ?>" />
    <?php endforeach; ?>
    

    在您管理删除的 PHP 代码中,to_delete 条目将是一个字符串数组。

    foreach ($_POST['to_delete'] as $rowId) {
        // Delete the row from database
    }
    

    另外,不要引人注目!依靠一个标准的&lt;form&gt; 元素来包装你所有的&lt;input&gt; 元素。这将真正简化您的 JavaScript 代码,因为您只需要调用 jQuery.serializeArray 来检索选中框的数组。

    $('#form').on('submit', function(e) {
        e.preventDefault();
        var data = $(this).serializeArray();
        // POST an AJAX request with data
        return false;
    });
    

    【讨论】:

      猜你喜欢
      • 2016-06-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多