在这个简单的例子中,'return'用于三个地方。所以,我只是混淆了在函数中使用'return'。什么是使用这个'return'何时在函数内部使用?
主要是,我需要知道,在提交按钮上,“返回”用于“onclick”属性,请参阅此处<input type="submit" value="submit" onclick="return validateR();">
。所以,也解释一下,'返回'究竟在这里做了什么。请。
<HTML>
<HEAD>
<TITLE>ComboBox Validation</TITLE>
<script Language="JavaScript">
function validateR(){
var selectedCombobox = (comboForm.technology.value);
if (selectedCombobox == "-1") {
alert("Please Select Technology");
return false; //here
}
if (selectedCombobox == "Servlet") {
alert("Yse");
}
return true; //here
}
</script>
</HEAD>
<BODY>
<form name="comboForm">
<select name="technology">
<option value="-1">Select</option>
<option value="JSP">Java Server Pages</option>
<option value="Servlet">Servlet</option>
<option value="PHP">PHP</option>
<option value="ASP">ASP</option>
</select>
<input type="submit" value="submit" onclick="return validateR();"> //here
</form>
</BODY>
</HTML>
答案 0 :(得分:6)
当你有一个事件处理程序时,例如
<input type="submit" value="submit" onclick="return validateR();">
您可以向活动返回一个值。如果返回值false
,则会阻止事件的默认行为。您可以将false返回到onsubmit
事件,以防止提交该页面。
总结一下,
return validateR() --> return true (or false) --> prevents default behavior of event
此行为在所有浏览器中都是标准化的。它后来被event.preventDefault
和event.stopPropogation
的组合所取代,它们完全相同。但是,有些人更喜欢内联语法(return func();
),它也适用于旧版本的IE。
我已经掩饰了一些关于事件冒泡的细微之处。以下是对更深入讨论的一些参考:
答案 1 :(得分:1)
validateR
是一个返回函数。它正在验证form
comboForm,以确保当一个值不是&#34;选择/ -1&#34;已在提交form
时被选中。因此,对于值为&#34; -1&#34;的情况,它返回false。否则返回true
。
现在,对于提交输入,在返回click
时会阻止默认false
。所以这意味着当函数validateR返回false
时,form
不会被提交,因为会阻止默认的onclick
行为。否则,它返回true
并提交表单。
相同的技术(虽然过时)用于链接,点击以下内容不会将您带到URL。
<a href="http://www.stackoverflow.com" onclick="return false">Clicking this does nothing</a>
答案 2 :(得分:0)
是否提交表格是验证功能!如果您尚未选择该选项,则表单将不会提交。
这就是保留false
的原因。
如果选择了Servlet
选项,则alert('yes')
。
答案 3 :(得分:0)
函数内部的返回是&#34;响应&#34;对于代码中的特定事件或情况..在您的情况下,&#34;回答&#34;您的提交按钮将调用您的validateR函数,该函数将:
如果你的selectedComboBox = -1,返回false 如果selectedComboBox =&#34; Servlet&#34;则返回警报 否则它应该返回true
我相信按钮的返回是不必要的(因为调用函数已经返回了一些东西)..不确定。
答案 4 :(得分:0)
您可以使用“返回功能”的一种情况是,当您遵循基于原型的对象模型时,您希望能够拥有您想要保护的私有方法或成员。因此,您将在t中定义其他函数,并声明一些变量,以便它们位于闭包内。然后,根据原型返回表示要构造的实际对象的函数。
外部世界无法访问这些私有成员和方法,因为它们不会暴露在对象中并且是外部函数的本地,但是由于关闭,您可以访问。
答案 5 :(得分:0)
保持简单; onclick
是它自己的“功能”。你基本上是在内部(引号内)编写该函数的语句/定义。
浏览器具有不同的“回调”(松散地使用术语),具体取决于具有click功能的元素。例如,如果返回true
(或根本没有返回任何值),则浏览器将转到新页面(如果它是锚点/链接);如果它是提交按钮,它将提交表单。要取消浏览器的默认操作,您可以返回false
。
您的示例是编写onclick="var success=validateR(); return success;"
的较长方式,因此浏览器操作取决于您正在调用的函数的操作。如果验证成功,那么浏览器将运行其回调,最有可能加载另一个页面;否则它不会做任何事情,在这种情况下你可能有其他代码显示某种错误信息。