繁体   English   中英

第一次单击后停止功能,以防止执行更多操作

[英]stopping a function after first click, to prevent more executions

我有这个功能

        function display() {
        $.ajax({
            url: "new.php",
            type: "POST",
            data: {
                textval: $("#hil").val(),

            },
            success: function(data) {
                $('.daily').html(data);
            }

        });
    }

并且它达到了目的,唯一的问题是,用户可以多次点击<a href="#" onclick="display();"></a> ,并且它将发送尽可能多的请求到new.php。 我想要的是将其限制为仅单击一次,直到下一页刷新或清除缓存为止。

这应该做您想要的:
设置一个全局变量,该变量存储是否已经调用/执行了该函数。

onceClicked=false;

function display() {
    if(!onceClicked) {
      onceClicked=true;

      $.ajax({
        url: "new.php",
        type: "POST",
        data: {
            textval: $("#hil").val(),

        },
        success: function(data) {
            $('.daily').html(data);
        }

      });
    }
}

一个简单的例子是:

<script>
var exec=true;
function display() {
    if(exec){
        alert("test");
        exec=false;
    }
}
</script>

<button onclick="javascript:display();">Click</button>

您的情况是:

var exec=true;
function display() {
    if(exec){
        $.ajax({
            url: "new.php",
            type: "POST",
            data: {
                textval: $("#hil").val(),

            },
            success: function(data) {
                $('.daily').html(data);
                exec=false;
            }

        });
    }
}

在onclick期间,将布尔标志设置为true,以指示用户在调用display()函数之前单击了链接。 在display()函数内部,检查布尔标志并仅在为true时才继续。 在AJAX完成处理(成功或失败)之后,将标志重置为false。

您可以使用如下所示的Lock变量。

var lock = false;
function display() {
        if (lock == true) {
            return;
        }
        lock = true;
        $.ajax({
            url: "new.php",
            type: "POST",
            data: {
                textval: $("#hil").val(),
        },
        success: function (data) {
            $('.daily').html(data);
            lock = false;
        }
    });
}

你也可以用这种方式实现

 $(function() { $('#link').one('click', function() { alert('your execution one occured'); $(this).removeAttr('onclick'); $(this).removeAttr('href'); }); }); function display(){ alert('your execution two occured'); } 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <a href="#" onclick="display();" id='link'>Have you only one chance</a> 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM