2017-02-16 5 views
0

私のonsubmitコードに問題があります。私は第三者の会社から電卓を使用していますが、フォームが提出されたらJavaScriptを起動しようとしています。警告は消えますが、返品が偽に設定されていれば、フォームは依然として提出されます。ここでJavaScriptをオンにしても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あなたがスクリプトをロードするのを待ってからボタンを押してJavaScriptを挿入するのを待たなければならないのは、スクリプトのロード検出を行う方法を理解していないからです。

ありがとうございました。

+0

フォームはどのようにしてオンクリックなしで添付できないのですか? – epascarello

+0

@epascarello、会社が提供するスクリプトは、電卓を構築します。したがって、ページが読み込まれたときにjavascriptが実行されていれば、まだビルドされていないためフォームが見つかりません。だからこそ、私がまだ構築しようとしていないスクリプトのための負荷が必要なのです。 –

答えて

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の最後に余分な "}"があることに気付きました。私はそれを削除した後、コードは正常に実行されましたが、戻り値がfalseのときにはまだ送信しています。あなたはonloadの問題を解決しました。ありがとうございました –

+0

@Rick Sibley - あなたのフィードバックに感謝しました。私はちょうど私の答えを編集しました:) – ymz

関連する問題