首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >‘onsubmit &&!onsubmit()’是做什么的?

‘onsubmit &&!onsubmit()’是做什么的?
EN

Stack Overflow用户
提问于 2014-03-30 17:09:01
回答 3查看 112关注 0票数 1

在下面的代码中,onsubmit && !onsubmit()试图防止意外提交两次表单。

代码语言:javascript
复制
<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()是否变成非空,并且onsubmit()总是返回false?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-03-30 17:11:52

如果为这个特定的表单定义了submit处理程序,就会调用它;如果它返回一个falsy值,则submitform函数将立即返回-否则它将提交该表单。

从这个描述看,它看起来像是某种验证框架--如果为特定表单定义了验证函数,并且它的调用返回true (意味着表单被正确填充),则表单将被提交。

票数 2
EN

Stack Overflow用户

发布于 2014-03-30 17:11:48

此代码测试onsubmit是否存在,如果存在,则调用它,如果返回值为false,则返回。

如果未定义函数,则不计算&&的第二个运算符,因此不调用该函数。

它是等价物的简短表示法:

代码语言:javascript
复制
if (onsubmit) { // function exists
    if (!onsubmit()) { // function call returned false
        return; // cancel
    }
}

这允许用户提供一个自定义提交处理程序,该处理程序可以通过返回false调用取消提交。

票数 0
EN

Stack Overflow用户

发布于 2014-03-30 17:13:48

它的字面意思是:“如果表单有一个onsubmit处理程序,如果这个处理程序返回一些错误,在它直接调用表单提交之前返回,它不会调用onsubmit处理程序”。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22747021

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档