我有一个简单的表单,除了提交按钮之外别无其他。我想做的就是阻止提交表格(我知道这没有任何意义,但这只是为了说明)。所以我正在使用表单的onsubmit
事件和此事件returns false
。这确实有效,但这就是“不可理解的行为”出现的地方。
我可以使用内联return false;
将onsubmit
语句与表单的JavaScript
事件相关联,也可以将其保存在其他位置。
<form onsubmit="return false;" id="form1" method="post">
<input type="submit" id="btnButton" value="Submit" />
</form>
现在,上述代码工作得很好。见=&gt; http://jsfiddle.net/MccK5/
我甚至可以修改上面的代码,以使JavaScript分离(不引人注目)。
--some html markup initially
<form onsubmit="return falsifier()" id="form1" method="post">
<input type="submit" id="btnButton" value="Submit" />
</form>
<script>
function falsifier() {
return false;
}
</script>
--other html markup follows
此处,脚本标记位于HTML
标记中的表单后面。
这也有效。见=&gt; http://jsfiddle.net/AfdQ5/
但是当我将JavaScript
转移到另一个地方(例如:外部文件)时,这似乎不起作用。
通过查看inspect元素中的控制台,我注意到错误falsifier is not defined
。
在此处查看=&gt; http://jsfiddle.net/5cR5R/2/
有人可以详细说明为什么会这样吗?
答案 0 :(得分:2)
您在JSFiddle中遇到了设计功能(或缺陷):
在JSFiddle中,&#34; JavaScript&#34;窗格不引用的JavaScript文件的直接源代码,而JSFiddle将该代码包装如下,并将其插入<head>
。只需查看源代码即可查看其功能:
<script type='text/javascript'>
//<![CDATA[
window.onload=function(){
function falsifier() {
return false;
}
}
//]]>
</script>
您的<form>
元素无法找到falsifier
,因为falsifier
仅存在于此匿名函数的范围内。