什么是'onsubmit&& !onsubmit()`做什么?

时间:2014-03-30 17:09:02

标签: javascript dom

在下面的代码中,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?

3 个答案:

答案 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;。