0

我有以下代码,但是问题是,如果我使用普通的提交按钮,一切正常,但是如果我想用 jquery onchange 提交复选框值,它就不起作用(即没有任何东西进入数据库).. .我什至尝试使用onChange=this.form.submit()附加到构造的非jquery路线。任何人都知道发生了什么/如何解决这个问题?对我来说,表单似乎是在不处理数据的情况下提交的。

我也在使用:https://github.com/ghinda/css-toggle-switch复选框

查询:

$('#construction').change(function() {
  this.form.submit();
});

PHP:

<?php
$config = mysql_query("SELECT construction FROM config") or die(mysql_error());
$row_config = mysql_fetch_assoc($config);

if ($_POST) {
    // 0 = off
    // 1 = on
    $constr = $_POST['construction'];
    if ($constr == 'on') { $c = 0; } else { $c = 1; }
    mysql_query("UPDATE config SET construction = '".$c."'") or die(mysql_error());
    redirect('index.php');
}
?>

HTML:

<div style="margin-top:30px;">
        <form action="index.php" method="post" id="doSite">
            <fieldset class="toggle">
                <input id="construction" name="construction" type="checkbox"<?php if($row_config['construction'] == '0') { echo ' checked'; } ?>>
                <label for="construction">Site construction:</label>
                <span class="toggle-button"></span>
            </fieldset>
            <input name="Submit" type="submit" value="Shutdown site" class="button">
        </form>
    </div>
4

3 回答 3

2

试试这个,

$('#construction').change(function() {
  $(this).closest("form").submit();
});

演示

于 2012-07-30T01:03:36.987 回答
1

将您的 jquery 更改为:

$('#construction').change(function() {
  $("#doSite").submit();
});

doSite是您的表单ID,因此您可以在选中或取消选中复选框时直接使用它来提交表单。

我更新了您的代码:
- 使用isset检查是否设置了变量 - 在表单提交时未检查的复选框不包含在 $_POST 数据中:这意味着您只需要检查 $_POST['construction']是否设置(它的值无关紧要)
- 由于您在 mysql_query 中使用双引号,因此无需连接。而且,如果construction字段是 INT 类型,您可以删除 $c 周围的单引号

<?php
$config = mysql_query("SELECT construction FROM config") or die(mysql_error());
$row_config = mysql_fetch_assoc($config);

if(isset(($_POST))
{
    // 0 = off
    // 1 = on
    if(isset($_POST['construction']))
        $c = 1;
    else
        $c = 0;
    mysql_query("UPDATE config SET construction = '$c'") or die(mysql_error());
    redirect('index.php');
}
?>

注意:所有 mysql_* 函数都将在某一天被弃用和删除。如果可能,您应该改用MySQLiPDO
更多信息:http:
//php.net/manual/en/faq.databases.php#faq.databases.mysql.deprecated
http://php.net/manual/en/mysqlinfo.api.choosing.php

于 2012-07-30T01:06:09.547 回答
0

你为什么不使用:

$("#checkid").click(function(){

})

于 2012-08-20T11:31:59.063 回答