我有这个功能
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发送尽可能多的请求。
我想要的是将其限制为只需单击1次,直到下一页刷新或缓存清除。
答案 0 :(得分:1)
这应该做你想做的事:
设置一个全局变量,用于存储函数是否已被调用/执行。
onceClicked=false;
function display() {
if(!onceClicked) {
onceClicked=true;
$.ajax({
url: "new.php",
type: "POST",
data: {
textval: $("#hil").val(),
},
success: function(data) {
$('.daily').html(data);
}
});
}
}
答案 1 :(得分:1)
简单的例子是:
<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;
}
});
}
}
答案 2 :(得分:0)
在onclick期间,将布尔标志设置为true以指示用户在调用display()函数之前单击了该链接。在display()函数内部,检查布尔标志并仅在它为真时继续。在AJAX完成处理(成功或失败)后将标志重置为false。
答案 3 :(得分:0)
您可以使用下面的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;
}
});
}
答案 4 :(得分:0)
你也可以用这种方式实现这个
$(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>