我正在为客户创建一个表单验证器,在Internet Explorer 7/8中遇到了这个奇怪的错误,其他浏览器均无此问题:
在函数外面的return,第1行,第1列
当然,第一行根本没有任何代码。它只是一个简单的注释语句,而且没有任何问题。因此我知道这只是一个调试错误。
我已经排除了一些显而易见的问题:循环语句中的return、单个函数中太多的return和任何在非法函数定义之外的返回。
这是什么原因呢?
我正在为客户创建一个表单验证器,在Internet Explorer 7/8中遇到了这个奇怪的错误,其他浏览器均无此问题:
在函数外面的return,第1行,第1列
当然,第一行根本没有任何代码。它只是一个简单的注释语句,而且没有任何问题。因此我知道这只是一个调试错误。
我已经排除了一些显而易见的问题:循环语句中的return、单个函数中太多的return和任何在非法函数定义之外的返回。
这是什么原因呢?
问题在于我使用了一个返回语句来覆盖表单的默认行为,并将其赋值给一个属性,但是它没有放在一个匿名函数内部!
我有一个设置如下的表单元素:
<form name="formname" onSubmit="javascript:validateForm(this);" action="javascript:return false;" method="post" enctype="multipart/form-data">
我只需要将action属性更改为这个:
… action="javascript:function(){return false};"
现在它完美无缺地运行!
javascript:
类型的URL非常不好,尤其是在action
上不要使用。如果对于非JS用户真的没有有用的表单提交地址,你可以给它一个无用的动作,比如#
,并使用onsubmit="return false"
来阻止表单提交(不需要在事件处理程序上添加javascript:
前缀,因为它们不是URL;包括它什么也做不了)。或者,如果您不需要将仅限于脚本的表单字段与任何提交位置相关联,那么可以省略表单标签。 - bobincejavascript:
。改用onsubmit="return validateForm(this);"
。 validateForm
只需要返回false即可阻止表单提交。onsubmit
已经期望JavaScript,所以不需要javascript:
。那么为什么不将操作留空呢?不需要#。 - roberkulesaction="javascript:function(){return false};"
阻止提交表单的原因不是return false
部分。您可以使用javascript:function(){return true};
或javascript:function(){return 'pants'};
或javascript:var foobar;
或javascript:void(0);
来实现相同的阻止效果。只是想指出这段代码有点误导性。它阻止了表单提交,因为javascript:代码什么也没做,也没有返回任何内容,而不是声明一个函数并在运行时返回false。 - Mike Clark检查以确保您的函数参数中没有写入“var”。
在许多语言中,您必须指定参数类型。 在JavaScript中,您不必这样做。
var
如何帮助 OP 的 return
。 - dakabjavascript: href
标签是可以接受的,因为系统的使用本来就需要 JavaScript。href="javascript:"
没有什么问题,对吧?我在使用ModalPopupExtender时遇到了这个错误。我已经指定了以下属性:
OnOkScript="return false;"
设置 OkOkScript=""
对我解决了这个问题。