【发布时间】:2020-03-09 22:39:09
【问题描述】:
我有一个带有 contenteditable 值的表,当我更改值时,ajax 操作将更新 DB 的值。 问题是单击一个框,然后在警报继续出现后立即单击另一个框,而无法执行任何其他操作。 有没有办法阻止其他点击功能一旦启动?
代码 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>';
【问题讨论】:
-
可以防止函数触发。请描述您的代码应该如何工作的完美场景。现在每次移动焦点时它都会打开
confirm提示,对吗? -
现在当我点击页面的空白部分时,会出现确认警报,确认后将上传到数据库(一切正常)。但是,如果我按下另一个 td 单元格,确认被窃听并继续出现,无法取消或处理。
-
@EmielZuurbier 你有什么建议给我吗?每次用户移动焦点时我都会确认功能工作
-
个人建议不要使用
onblur事件触发提示。而是创建一个按钮,您可以在该按钮上手动触发提示并保存整个表格。 -
@EmielZuurbier 是个好主意,但如果用户尝试更改所有行,我认为脚本将失败。 onblur 用于单独更改每一行
标签: javascript php