javascript - 判断checkbox是否有变化

标签 javascript php html mysql checkbox

所以我有一个表单,它执行查询并用文件路径形式的查询结果填充表单,上次更新时间等......它还为每个条目显示 5 个不同的受众复选框已填充,并且如果这些复选框在数据库中具有值,则会选中这些复选框(有 5 个可能的受众值 - 因此有 5 个复选框 - 并且一个条目可以有多个受众值,因此可以在一个条目中选中多个复选框)。到目前为止,我已经完成了所有工作,该页面显示了我的 mysql 数据库中的所有正确条目及其受众复选框。现在我需要做的是找到一种方法来检测这些复选框与最初从数据库检索的内容是否有变化,如果有变化,则将值插入到数据库中。我该怎么做呢? JavaScript?在 PHP 中比较数组? 这是我的 while 循环的一部分,它使用复选框填充表单:

printf("\t<tr class='recordrow'>
        \n\t\t<td><a class='page_modal' href='#mWindow%s' target='_blank'>%s</a></td>
        \n\t\t<td class='ppath'>%s</a></td>
        \n\t\t<td>%s</td>
        \n\t\t<td><input type='checkbox' name='audience[]' $currentcheckbox/><div class='page_dialog' id='mWindow%s'><img src='exit.png' class='close' alt='close'/><img src='newwin.jpg' alt='new window'/><div id='content_section'>%s</div></div> </td>
        \n\t\t<td><input type='checkbox' name='audience[]' $prospectivecheckbox/></td>
        \n\t\t<td><input type='checkbox' name='audience[]' $facultycheckbox/></td>
        \n\t\t<td><input type='checkbox' name='audience[]' $staffcheckbox/></td>
        \n\t\t<td><input type='checkbox' name='audience[]' $externalcheckbox/></td>
        \t</tr>",$folder_content["cms_id"],$folder_content["display_name"],$page_path,$update,$folder_content["cms_id"],$folder_content["path"],$folder_content["cms_id"],$folder_content["content"]);

最佳答案

这取决于您何时想要检测是否有更改:何时提交表单,或者何时实时单击复选框。如果是后者,只需对 javascript 事件执行 ajax 请求即可:

jQuery checkbox change and click event

http://html.net/tutorials/javascript/lesson21.php

如果是前者,我就不会费心检查复选框是否已更改。只需使用表单中提交的内容覆盖数据库中的值即可。在大多数情况下,我发现,在更新记录之前尝试检测更改会更加令人困惑并且容易出错,而且我还没有看到它有任何性能优势。

如果您只需在发生更改时执行更新,请获取原始复选框值的数组,并使用 array_diff 将它们与新值进行比较。

$values = get_current_values_somehow();
$remove = array_diff($values, $_GET['audience']); // Array of entries to remove
$add = array_diff($_GET['audience'], $values); // Array of entries to add

if (count($remove) > 0) {
    // Remove from database
}

if (count($add) > 0) {
    // Add to database
}

关于javascript - 判断checkbox是否有变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21147422/

相关文章:

javascript - 在 Gmail Javascript 中检测互联网连接

javascript - 将数组保存到状态?

php - 分数上下的数据库关系,像stackoverflow那样?

php - 如何从映射中指定数组键

javascript - IndexedDB:修改对象存储中预先存在的对象

jquery mobile事件taphold在图像上

Javascript/xhtml - 发现溢出 :hidden 的 div 中内容的总宽度

javascript - FancyTree:拖动到根级别时节点对象不正确

php symfony2安装缓存权限

html - 创建一个透明箭头