【问题标题】:How can I get a checkbox value (ticked or unticked) into jquery / ajax variable?如何将复选框值(勾选或未勾选)放入 jquery / ajax 变量中?
【发布时间】:2021-02-16 18:00:27
【问题描述】:

我正在使用 ajax 将复选框保存到我的数据库中,而无需重新加载页面。因此,当进行 ajax 调用时,我需要知道复选框的值(无论是勾选还是未勾选)。我已经尝试了 SO 中的以下代码行来获取复选框值,但它们似乎都不适合我:

tb_checkbox_id = jQuery('#tb-checkbox-id').val();  //always returns on
// tb_checkbox_id = jQuery('#tb-checkbox-id').prop('checked');  always returns false
//  tb_checkbox_id = jQuery('#tb-checkbox-id').is(':checked');  always returns false

选择了正确的 id,因为我可以更改 html 中的值,并使用上面的代码更改输出(例如,设置为 false 然后将输出 false)。

这是我的其余代码。页面上还有另一个复选框,但具有不同的 ID。

为什么勾选或不勾选总是返回相同的值?我想不通。

function tb_checkbox ($db_table_name, $db_userid_column_name, $db_checkbox_column_name, $where_user_id, $checkbox_default)
{
/*------Echo checkbox form------*/
    echo '<form action="" method="post" id="checkbox_form">';
    echo '<input type="checkbox" class="tb-checkbox" id="tb-checkbox-id" name="tb_checkbox_practitioner_pages"'; 
    if ($checkbox_db_value == 1) //Display the checkbox as "checked" or not by reading checkbox_db_value which is the value from database. Is set to default value if no database value exists.
        { 
            echo ' checked';
        }
        echo '> <input type="submit"> </form>';
        echo "<p>Value at POST is: ";
        echo $_POST['tb_checkbox_practitioner_pages'];
    $user_id = bbp_get_current_user_id();
    ?>
    <script>
//  tb_checkbox_id = jQuery('#tb-checkbox-id').val();
//  tb_checkbox_id = jQuery('#tb-checkbox-id').prop('checked');
  tb_checkbox_id = jQuery('#tb-checkbox-id').is(':checked');
    js_user_id = '<?php echo $user_id;?>';
    jQuery('#checkbox_form').on('submit', function(e){
        e.preventDefault();
        $.ajax({
            type: "POST",
            url: "/wp-content/themes/buddyboss-theme-child/tb-checkbox-js-called.php",
            data: {userid: js_user_id},
            success: function() {
            alert("Success checkbox = " + tb_checkbox_id)          //('Post is' + $_POST['tb_checkbox_practitioner_pages']);
            }
        });
    });
    </script>
    <?php
}

【问题讨论】:

    标签: javascript php ajax checkbox


    【解决方案1】:

    好问题。

    我会存储一个布尔值 true 或 false(分别为 1 或 0)。

    你会这样检查

    tb_checkbox_id = document.getElementById("#tb-checkbox-id").checked;
    

    这将存储一个真或假(检查或未检查)。然后我会将其存储在数据库中。

    【讨论】:

    • 非常感谢@Chris。把你的代码放进去,我得到:“(索引):1297 Uncaught TypeError:无法在(索引):1297读取属性'checked'的null”
    • 在查看代码时,不知道为什么要使用jQuery重新检查是否已检查。我只是将 ajax 请求放在 if 语句中。 'If ($checkbox_db_value ==1) { make your ajax request}' 如果这个值实际上是 1,这意味着它被检查了——所以此时只需将它发送到 ajax。我没有理由检查两次。
    • 能否请您显示导致错误的代码?
    • 你也可以使用'jQuery("input:checked")'。您可以在此处查看文档:[api.jquery.com/checked-selector/]
    • 关于TypeError,错误是没有初始化变量的结果。您可能希望在范围内的某处添加“tb_checkbox_id = 0”。
    猜你喜欢
    • 1970-01-01
    • 2016-05-04
    • 1970-01-01
    • 2019-08-23
    • 2015-01-08
    • 2011-02-01
    • 2010-12-15
    • 2017-02-07
    相关资源
    最近更新 更多