在下面的代码中,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()是否变成非空,并且onsubmit()总是返回false?
发布于 2014-03-30 17:11:52
如果为这个特定的表单定义了submit处理程序,就会调用它;如果它返回一个falsy值,则submitform函数将立即返回-否则它将提交该表单。
从这个描述看,它看起来像是某种验证框架--如果为特定表单定义了验证函数,并且它的调用返回true (意味着表单被正确填充),则表单将被提交。
发布于 2014-03-30 17:11:48
此代码测试onsubmit是否存在,如果存在,则调用它,如果返回值为false,则返回。
如果未定义函数,则不计算&&的第二个运算符,因此不调用该函数。
它是等价物的简短表示法:
if (onsubmit) { // function exists
if (!onsubmit()) { // function call returned false
return; // cancel
}
}这允许用户提供一个自定义提交处理程序,该处理程序可以通过返回false调用取消提交。
发布于 2014-03-30 17:13:48
它的字面意思是:“如果表单有一个onsubmit处理程序,如果这个处理程序返回一些错误,在它直接调用表单提交之前返回,它不会调用onsubmit处理程序”。
https://stackoverflow.com/questions/22747021
复制相似问题