Javascript 什么是;返回false&引用;做
我编写了一个网页,用户可以在其中输入存储在数据库中的日志条目,然后使用Javascript 什么是;返回false&引用;做,javascript,jquery,ajax,Javascript,Jquery,Ajax,我编写了一个网页,用户可以在其中输入存储在数据库中的日志条目,然后使用ajax检索并打印到该网页上。我对ajax还是个新手,想知道是否有人能向我解释一下返回false的是什么在我的代码末尾做什么?甚至有必要吗 如果我把第二个ajax代码放在return false之后,代码就不起作用了!你能解释一下为什么吗 //handles submitting the form without reloading page $('#FormSubmit').submit(function(e) {
ajax
检索并打印到该网页上。我对ajax
还是个新手,想知道是否有人能向我解释一下返回false的是什么代码>在我的代码末尾做什么?甚至有必要吗
如果我把第二个ajax代码放在return false
之后,代码就不起作用了!你能解释一下为什么吗
//handles submitting the form without reloading page
$('#FormSubmit').submit(function(e) {
//stores the input of today's data
var log_entry = $("#LogEntry").val();
// prevent the form from submitting normally
e.preventDefault();
$.ajax({
type: 'POST',
url: 'behind_curtains.php',
data: {
logentry: log_entry
},
success: function() {
alert(log_entry);
//clears textbox after submission
$('#LogEntry').val("");
//presents successs text and then fades it out
$("#entered-log-success").html("Your Entry has been entered.");
$("#entered-log-success").show().fadeOut(3000);
}
});
//prints new log entries on page upon submittion
$.ajax({
type: 'POST',
url: '/wp-content/themes/childOfFanwood/traininglog_behind_curtains.php',
data: {
log_entries_loop: "true"
},
success: function(data) {
alert(data);
$("#log-entry-container").html("");
$("#log-entry-container").html(data);
}
});
return false;
});
我在这里写的内容适用于jQuery事件,
对于普通javascript事件,请阅读答案底部的@T.J.Crowder评论
在回调中返回false
可防止默认行为。例如,在submit
事件中,它不提交表单
return false
也会停止冒泡,因此元素的父元素不会知道事件发生了
返回false
相当于事件.preventDefault()
+事件.stopPropagation()
当然,返回xxx
行之后存在的所有代码都不会被执行。(与我所知道的所有编程语言一样)
也许你会觉得这很有帮助:
解释返回false
和事件.preventDefault()之间差异的“真实”演示:
标记:
<div id="theDiv">
<form id="theForm" >
<input type="submit" value="submit"/>
</form>
</div>
现在。。。当用户提交表单时,第一个处理程序是表单提交,它将不会提交表单,但事件将冒泡到div,从而触发其提交处理程序
现在,如果表单submit的处理程序将取消冒泡,返回false
:
$('#theDiv').submit(function() {
alert('DIV!');
});
$('#theForm').submit(function(event) {
alert('FORM!');
return false;
// Or:
event.preventDefault();
event.stopPropagation();
});
该部门甚至不知道有提交表格
在普通javascript事件中,返回false
做什么
从DOM2处理程序(addEventListener
)返回false完全不起作用(既不阻止默认值也不停止冒泡;从Microsoft DOM2 ish处理程序(attachEvent
)返回false,它阻止默认值,但不冒泡;从DOM0处理程序(onclick=“return…”
)返回false,它阻止默认值(前提是在属性中包含返回值)但不冒泡;从jQuery事件处理程序中,它可以同时执行这两项操作,因为这是jQuery的事情。这里有详细信息和实时测试–T.J.Crowder
在本例中,返回false;
阻止默认操作(即表单提交)
尽管使用e.preventDefault()可能更好由于ajax,您不希望表单以正常方式提交。因此您必须返回false以防止表单的默认行为。函数中return
语句之后的任何代码将永远不会执行。它停止函数的执行,并传递此函数的返回值(false
,在本例中)。您的函数是“提交”事件回调。如果此回调返回false
,则不会实际提交表单。否则,将像在没有JavaScript的情况下一样提交表单。返回语句结束函数执行
这很重要。使用return会导致代码短路并立即停止执行,从而阻止下一行代码执行停止默认表单提交行为没错,它会阻止默认操作,但也会停止冒泡。“在本例中”-表单提交不会冒泡。抱歉,看起来我是wrong.submit事件不冒泡-似乎这只在最罕见的情况下有用。+1用于回答实际问题,即使是事后思考+1是的,我正要写关于stopPropagation
的文章,但看到你已经提到了:)这是否意味着如果你有e.preventDefault()
如果它们都做相同的事情,你不需要返回false;
另请参见。@FrançoisWahl。另一种方法是…返回false
做e.preventDefault();+e.stopPropagation()
。如果你想要两者,只要返回false即可。
$('#theDiv').submit(function() {
alert('DIV!');
});
$('#theForm').submit(function(event) {
alert('FORM!');
return false;
// Or:
event.preventDefault();
event.stopPropagation();
});