【问题标题】:jQuery checkbox won't updatejQuery复选框不会更新
【发布时间】:2018-04-28 05:56:55
【问题描述】:

这是我的html:

<tr>
    <td class="tg-031e"><input type="checkbox" name="sel_a" class="a_qual" data-id23="<?php echo $row["id"]; ?>"
    <?php if($row["a_qual"] == 1) { echo "checked='1'"; } ?>
    ></td>
    <td class="a" colspan="2" data-id3="<?php echo $row["id"]; ?>" contenteditable><?php echo $row["a"] ?></td>
</tr>

这是我的 jQuery:

$(document).on('change', '.a_qual', function(){  
    var id = $(this).data("id23"); 
    var a_qual = $("input[type='checkbox']").val();
    edit_data(id, a_qual, "a_qual"); 
    console.log('my message' + a_qual);
}); 

这是我的 edit_data 函数:

function edit_data(id, text, column_name)  
{  
    $.ajax({  
        url:"edit.php",  
        method:"POST",  
        data:{id:id, text:text, column_name:column_name},  
        dataType:"text",  
        success:function(data){   
            fetch_data();
        }  
    });  
}  

这是我的edit.php:

include_once("includes/connection.php");
$sql = "UPDATE questions SET ".$_POST['column_name']."='".$_POST['text']."' 
WHERE id='".$_POST['id']."'";

// echo $sql;
if(mysqli_query($connection, $sql))
{
    echo 'Data Inserted';
}

我不知道自己做得足够好才能完成这项工作,而且在阅读了互联网上的数十篇帖子后,我真的很难过。出于某种原因,我可以让它将我的数据库值更改为“1”,然后它就卡在那里了。在我的数据库中,我有一个名为“a_qual”的列来存储复选框的“质量”,并将其设置为 TINYINT。谁能解决我的问题?

【问题讨论】:

  • 浏览您的代码,我认为代码的预期行为应该是切换数据库中 a_qual 的值,因为任何 id 都将在 0 和 1 之间更改。取消注释语句 echo $sql 以查看是否正确创建了 sql 语句。复制sql,分别在mysql中执行,看看有没有语法错误。如果这部分很好,请告诉我们,我们期待找到更多的问题
  • 这是个好主意,我很想尝试一下,但我的 edit.php 位于单独的文件中。我不知道如何让它显示 echo $sql 信息。就像它在后台执行一样。我不太了解jquery,无法让它向我展示这一点。但是,我确实放了“警报(数据);”就在“fetch_data();”的正上方在 edit_data 函数中并获得了一些信息:“Array ([id] => 304 [text] => on [column_name] => a_qual) 更新问题 SET a_qual='on' WHERE id='304' Data Inserted So, it似乎正在选择“on”而不是“1”或“0”有什么建议吗?
  • 使用浏览器中的开发者工具来执行/运行edit.php隔离。
  • 好的,我能够在警告框中看到 $sql ......所以这非常有帮助!所以,看来我的主要问题是我从来没有从我的复选框中得到“0”......我总是得到“1”。这可能是我对复选框工作方式的遗漏吗?我刚刚读到必须在其中放置一个 value=0 的隐藏字段...会这么简单吗?稍后我将不得不进行实验......

标签: jquery checkbox dynamic edit


【解决方案1】:

复选框的规则是在选中时发送“值”,否则什么也不发送。所以发送'0',如果没有选中复选框,需要手动完成。这么说我的意思是,在你的 on('change',....) 方法上,请解决一个条件以查看复选框是否被选中,然后基于该设置 a_qual 的值。

var a_qual = $("input[type='checkbox']").val();

希望这会对你有所帮助。

【讨论】:

  • 非常感谢您的意见!我想我至少解决了部分问题!结果和你说的完全一样。我将这些行放在我的“更改”方法中:var item = document.getElementById("a_qual"); var a_qual = (item.checked ? 1 : 0); 现在我可以在我的数据库中切换 0 或 1!所以,现在可以了。现在,我只需要让它刷新页面并显示新信息。我稍微改变了我的 html,所以我需要解决这个问题,我应该好好去!非常感谢!
  • 感谢您帮助我了解本网站的运作方式。我已经用了好几年了,但很少发布任何东西。我对这个很绝望。我借用了整个系统(LiveTables)并且......尝试实施并成功修改其他人的代码可能是一个巨大的挑战。在很多方面我仍然是初学者,但由于像这样的网站和像你这样乐于助人的人,我开始取得一些进展!再次感谢!
  • 哦,我尝试过投票,但显然我在这个网站上的排名还不够高,无法公开展示?它说它会记录我的赞成票,但不会显示它。无论如何,我看到了我的绿色复选标记,这很好。干杯!
猜你喜欢
  • 1970-01-01
  • 2011-11-20
  • 1970-01-01
  • 1970-01-01
  • 2013-06-21
  • 1970-01-01
  • 2017-05-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多