我的脑区有以下代码:
<script>
$(function() {
$("#idNameHere").click(function() {
var title = $("#threadTitle").val();
var category = $("#category").val();
var message = CKEDITOR.instances['message'].getData();
errors = new Array();
if (title == "")
errors.push("\n\t- You must enter a title.");
if (category == "")
errors.push("\n\t- You must select a category.");
if (message == "")
errors.push("\n\t- You must enter a message.");
if (errors.length > 0)
{
var errorString = "Please fix the following errors and try again:";
for (var i = 0; i < errors.length; i++)
errorString = errorString + errors[i];
alert(errorString);
}
else
{
$.get("./ajax/createThread.php", { title: title, category:category, message: message }, function(data) {
if (!isNaN(data))
window.location='./viewThread.php?tid='+data;
else
alert(data);
});
}
});
});
</script>
有时(但并非总是)它多次发送请求 - 所以我最终将线程对象以多个方式插入到我的数据库中。
从我读过的内容来看,这是因为click函数在$(function(){})内; area - 但是,如果我从该区域中取出click功能,则不会捕获click事件,并且根本不会运行代码。
如何才能让点击功能注册,并且只运行一次?
答案 0 :(得分:1)
如果您的意思是希望$ .get只发生一次,那么您需要在运行后禁用该按钮。
所以你必须添加这一行; $("#idNameHere").attr("disabled", "disabled")
禁用该按钮。
然后这个$("#idNameHere").removeAttr("disabled");
启用它,以防出现错误
凯文B; PS:强> 或者最好.prop(“disabled”,true) 和.prop(“禁用”,false) 我猜这是适用于较旧的浏览器版本和IE
像这样; $("#idNameHere").click(function() {
$("#idNameHere").attr("disabled", "disabled");
var title = $("#threadTitle").val();
var category = $("#category").val();
var message = CKEDITOR.instances['message'].getData();
errors = new Array();
if (title == "")
errors.push("\n\t- You must enter a title.");
if (category == "")
errors.push("\n\t- You must select a category.");
if (message == "")
errors.push("\n\t- You must enter a message.");
if (errors.length > 0)
{
var errorString = "Please fix the following errors and try again:";
for (var i = 0; i < errors.length; i++)
errorString = errorString + errors[i];
alert(errorString);
//re-enable the button
$("#idNameHere").removeAttr("disabled");
}
else
{
$.get("./ajax/createThread.php", { title: title, category:category, message: message }, function(data) {
if (!isNaN(data)){
window.location='./viewThread.php?tid='+data;
}else{
alert(data);
}
});
}
});
答案 1 :(得分:0)
我经常创建一个全局变量并将其设置为true。你将它作为条件的一部分并在运行函数后将其设置为flase,然后让函数在获取数据后将全局变量返回true(如果你想再次运行该函数)。