首页 > 解决方案 > Sqlite html5在插入时重复记录

问题描述

我有一个用户日志表,它为每个用户操作插入一条记录,但有时它会复制插入的记录。

我的代码很简单

<script>
    db.transaction(function(tx) {
      tx.executeSql('INSERT INTO tab_log (date_occurrence,hour_occurrence,number_user,occurrence,obs_occurrence) VALUES (?,?,?,?,?)', [var_date, var_hour, var_number_user, var_occurrence, var_obs_occurrence]);
    
    });

  </script>

   <input type="button" name="btn_finish" id="btn_finish" value="Finish" onclick="this.blur();salvar();">

编辑我已经发布了完整的代码。此代码完美运行,但有时会在日志表的行中翻倍

这曾经发生在任何人身上吗?有谁知道它可能是什么?

标签: javascripthtmlsqlitephonegap

解决方案


可以这么说,您正在添加两次点击侦听器。有一个在事件carregado()上调用的函数,它将window load事件侦听器绑定到finish按钮。

function carregado() {
    document.getElementById('btn_finish').addEventListener('click', salvar);
}

但是,html另一方面,您正在设置该onclick按钮的属性,使其调用salvar()两次,onclick并且addEventListener('click')都将不同的侦听器绑定到该按钮。

<input ... id="btn_finish" value="Finish" onclick="this.blur();salvar();">

你可以做些什么来解决这个问题,就是删除onlick属性调用,salvar()因为它破坏了你的逻辑,只有在完成加载页面后才绑定事件carregado(),所以在onclick这种情况下,这部分似乎没用。尽管如此,它会阻止salvar()被调用两次。


推荐阅读