jQuery序列化从MySQL动态创建的复选框

时间:2012-11-16 10:46:49

标签: php jquery mysql serialization checkbox

我在HTML表中动态地从MySQL循环中的PHP值创建行。每行代表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'));

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

你可能会看到我对这个很陌生。如果您需要查看更多代码,请与我们联系。

2 个答案:

答案 0 :(得分: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;

    }​

答案 1 :(得分:1)

要检索所有选中的复选框,请使用: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
}

另外,要不引人注目!依赖于包含所有<form>元素的标准<input>元素。这将真正简化您的JavaScript代码,因为您只需要调用jQuery.serializeArray来检索已选中复选框的数组。

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