javascript - 防止实时表上传的双重事件功能

标签 javascript php

我有一个具有可内容编辑值的表,当我更改值时,ajax 操作将更新数据库的值。 问题是,在警报继续出现后,单击一个框,然后立即单击另一个框,而无法执行任何其他操作。 有没有办法阻止其他点击功能一旦启动?

代码JS:

function showEdit(editableObj) {
  $(editableObj).css("background", "#FFF");
}

function saveToDatabase(editableObj, column, id) {
  var isGood = confirm('Are you sure?');
  if (isGood) {

    $(editableObj).css("background", "#FFF url(./img/loaderIcon.gif) no-repeat right");
    $.ajax({
      url: "saveedit.php",
      type: "POST",
      data: 'column=' + column + '&editval=' + editableObj.innerHTML + '&id=' + id,
      success: function(data) {
        $(editableObj).css("background", "#FDFDFD");
      }
    });
    //  }
  } else {
    alert('Abort');
  }
}

PHP 表:

echo '<td contenteditable="true" onBlur="saveToDatabase(this, \'nameDB\', \''.$res2['valuefromDB'].'\')" onClick="showEdit(this);">' .$res2['valuefromDB'] .'</td>';

最佳答案

您可以使用标志来阻止激活:

var saveEnabled = true; // Only let you save when this is true
function saveToDatabase(editableObj, column, id) {
  if (!saveEnabled) return; // If saveEnabled is false do not continue
  saveEnabled = false;
  var isGood = confirm('Are you sure?');
  if (isGood) {
    $(editableObj).css("background", "#FFF url(./img/loaderIcon.gif) no-repeat right");
    $.ajax({
      url: "saveedit.php",
      type: "POST",
      data: 'column=' + column + '&editval=' + editableObj.innerHTML + '&id=' + id,
      complete: function(data) { // Errors should be handled before this
        $(editableObj).css("background", "#FDFDFD");
        saveEnabled = true;
      }
    });
    //  }
  } else {
    alert('Abort');
    saveEnabled = true;
  }
}

关于javascript - 防止实时表上传的双重事件功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60264243/

相关文章:

javascript - 如何将范围值传递给指令 Controller

php - 如何存储永久 boolean 标志?

php - 在 PHP 中跨类共享类实例

javascript - 如何从 javascript 方法中获取值并分配给 header 字段

javascript - Angular 6 每 5 秒运行一次代码,但它第一次发出

javascript - 使用 Ajax、PHP、MYSQL 更新表单

php - 获取重复数组值的数组

php - 在运行查询之前如何检查 PDO MySQL 连接是否有错误?

java - 在没有内联脚本标签的 HTML 中显示 Javascript 变量

javascript - React Native Android 导航栏半透明