2017-02-16 44 views
0

我遇到了我的提交代码问题。我正在使用第三方公司的计算器,并且在提交表单时我试图触发一些JavaScript。警报将启动,但如果我将返回设置为false,表单仍会提交。Javascript onSubmit not returned false

下面是代码,我在我自己的环境中工作线: document.getElementsByTagName("Form")[3].onsubmit = function() { alert('Test'); return false; };

我已经在这里建立了一个副本: (对于什么都理它不会加载在片段中,我复制相同的代码到我的服务器,它工作正常,所以这里是它在行动。Page

function myFunction() { 
 
    document.getElementsByTagName("Form")[0].onsubmit = function() { alert('Test'); return false; }; 
 
}
<button onclick="myFunction()">Wait for script to load then press this button to add the onsubmit, then you can press calculate</button> 
 
<script src="https://calculators.symmetry.com/widget/js/salary.js?key=RHA0Slc2ZjEydjNkR0Y2eTEvOUxpZz09"></script>

I H还没有想出如何为脚本执行onload检测,所以这就是为什么你必须等待脚本加载然后按下按钮才能插入javascript。

感谢您的任何帮助。

+0

那么如何加载窗体,你不能附加它没有onclick? – epascarello

+0

@epascarello,公司提供的脚本构建计算器。所以,如果我在页面加载时运行javascript,它将不会找到表单,因为它尚未构建。这就是为什么我需要一个脚本的onload,我还没有建立。 –

回答

1

嗯..在你的解决方案你是添加一个新的事件处理程序上的每一个按钮的形式点击

而是宣布在页面加载事件处理程序,然后触发它

它应该是....

<script> 
    function onMyPageLoaded() 
    { 
     document.getElementsByTagName("Form")[0].onsubmit = function (e) 
     { 
       e.preventDefault(); 

       // place your code here 

       return false; // cancel form submit 
     }; 
    } 

    function doSomething() // use this ONLY if you intend to by-pass the native submit mechanism 
    { 
     document.getElementsByTagName("Form")[0].submit(); // trigger the event here 
    } 
</script> 

<body onload="onMyPageLoaded()"> 
    <form> 
     <button type="submit">send</button> 
    </form> 
</body> 
+0

我不确定如果我只是使用你的代码错误,但在测试中,我用你的代码片段运行我仍然遇到问题表单提交,但现在警报没有出现。目标是让表单不提交但显示一条消息。在稍后的阶段,病倒回来,并添加一个模态窗口,将出现,而不是一个警报。感谢您的帮助btw –

+0

好的,我注意到在JavaScript的结尾处还有一个额外的“}”。我删除它后代码运行良好,但它仍然提交时,返回是错误的。你确实解决了onload问题。所以谢谢 –

+0

@Rick Sibley - 感谢您的反馈我刚编辑我的答案:) – ymz