在下面的代码中,onsubmit && !onsubmit()
似乎试图阻止意外提交表单两次。
<form name="myform" action="handle-data.php">
Search: <input type='text' name='query' />
<a href="javascript: submitform()">
<img src="go.gif" width="33" height="19" border="0" />
</a>
</form>
<script type="text/javascript">
function submitform()
{ if(document.myform.onsubmit && !document.myform.onsubmit())
{ return; }
document.myform.submit(); }
</script>
我不明白这是如何运作的;如果onsubmit
被调用,onsubmit()
是否为空,submit()
总是返回false?
答案 0 :(得分:2)
如果为此特定表单定义了submit
处理程序,则会调用它;如果它返回一个假值,submitform
函数会立即返回 - 否则它会提交表单。
从这个描述看起来它看起来像某种验证框架 - 如果为特定表单定义验证函数,并且其调用返回true
(意味着表单已正确填充),则表单将被提交。
答案 1 :(得分:0)
此代码测试onsubmit
是否存在,如果存在,则调用它,如果返回值为false
则返回。
如果未定义函数,则不评估&&
的第二个运算符,因此不会调用该函数。
这是等效的简短表示法:
if (onsubmit) { // function exists
if (!onsubmit()) { // function call returned false
return; // cancel
}
}
这允许用户提供自定义提交处理程序,可以通过返回false
来调用取消提交。
答案 2 :(得分:0)
字面意思是:&#34;如果表单有一个onsubmit处理程序,如果这个处理程序返回一些falsy,则在它直接调用表单上的submit之前返回,这不会调用onsubmit处理程序&#34;。