我如何检查提交是否被点击,这样我的功能就不会触发

How do I check if a submit is clicked, so my function will not trigger?

本文关键字:我的 功能 何检查 检查 是否 提交      更新时间:2023-09-26

我正在一个图片上传网站上工作。当用户上传图像没有问题时,它会将图像保存在4个不同文件夹中的4个不同大小。之后,它们被重定向到具有新内容的同一页面。现在他们要裁剪图像。图像裁剪功能工作正常。我做了一个功能来检查用户是否离开了网站。如果他们这样做了,这3个函数将通过AJAX脚本删除4个存储的图像。

代码:

function unfinished(album, img) {
    window.onbeforeunload = function(e) {
        e = e || window.event;
        var response = '';
        var xmlhttp;
        if (window.XMLHttpRequest) {
            // code for IE7+, Firefox, Chrome, Opera, Safari
            xmlhttp = new XMLHttpRequest();
        } else {
            // code for IE6, IE5
            xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
        }
        xmlhttp.onreadystatechange = function() {
            if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
                response = xmlhttp.responseText;
            }
        }
        xmlhttp.open("GET", "incl/unfinished.php?a=" + album + "&i=" + img, true);
        xmlhttp.send();
        // For IE and Firefox prior to version 4
        if (e) {
            e.returnValue = response;
        }
        // For Safari
        return response;
    }
}

我的问题是,当他们点击"保存作物"按钮时,这个功能也会被触发。当然这不是我想要的。

如何在单击保存按钮时不弹出该功能,有什么解决方案吗?

如果重要的话,我通过以下方式运行未完成的功能:

onload='onfinished("$nameonalbum","Filename")'

我的保存作物html代码:

input type="submit" name="upload_thumbnail" value="Save crop" id="save_thumb"

欢迎任何帮助。感谢您的耐心和理解。

在一个案例中,我不得不做一些与您类似的事情,所以我创建了一个变量unload = true和页面的开头,然后我没有做<input type="submit",而是将其更改为<input type="button" onclick="runFunction();",然后在我的中

function runFunction() {
unload = false;
$('#form').submit();
};

那么我将在onBeforeUnload() 中添加if(unload) { ...do stuff here }

由于Ajax请求和事件处理,当前的流程非常复杂。

您可以将流程更改为如下。

  1. 用户在upload.php上传图片
  2. upload.php
    1. 创建原始图像的4个版本
    2. 用TIMESTAMP将这些图像标记为数据库中的NOT_CROPPED
    3. 删除数据库中TIMESTAMP早于1 day的任何NOT_CROPPED类型的图像。自行定义此持续时间
  3. upload.php加载,新裁剪工具可见
  4. 提交时,所有4个图像的状态更新为COMPLETE