2017-08-13 6 views
0

私は以下のような形式があります:私はボタンをクリックすると、実際にそれがフォームを送信しますが、alertボックスが表示されませんでしたけれどもsubmit()メソッドがonsubmitイベントをトリガーしなかったのはなぜですか?

<form action="/action_page.php" onsubmit="alert('The form was submitted');" > 
    Enter name: <input type="text" name="fname"> 
    <input type="button" onclick="document.getElementsByTagName('form')[0].submit()" value="Submit"> 
</form> 

を。つまり、submit()メソッドはフォームを提出しましたが、onsubmitイベントはトリガーされません。何が起こった?また、submit()メソッドを使用してonsubmitイベントをトリガする方法はありますか?

+0

タイプ送信ボタンで入力を追加する必要があります。入力ボタンをクリックすると、onsubmitだけが自動的にトリガーされます。 あなたのhtmlに以下の要素を追加してクリックしてください '' –

+0

btwは単に 'document.forms [0]'を使うことができます。あなたのコードの中の要素 'this.form' – inarilo

+0

そのボタンです。それはonclickを発射するでしょう。 onclickでは、フォームをjavascriptで送信しました。あなたはそれが何か違いがあるかどうかを確認するために入力タイプsubmitに変更しようとすることができます。その場合は、'をjavascript.httpsから送信する必要はありません。//www.w3schools.com/jsref/event_onsubmit.asp – Amit

答えて

1

まあ、documentation for the submit methodは、onsubmitを引き起こさないことはかなり明確です。

次フォーム要素のいずれかが、フォーム送信が発生するので:

<input type='submit'> 
<input type='button'> 
<button> 

あなたはおそらく、それはあなたができないと思われるすべての

0

でそのボタンのonclickのハンドラをしてください必要はありません。この記事をチェック - https://stackoverflow.com/a/19847255/8449863

しかし、隠されたボタンを提出して回避策を試してください。

<form action="/action_page.php" onsubmit="alert('The form was submitted');" > 
    Enter name: <input type="text" name="fname"> 
    <input type="button" value="Submit" onclick="document.getElementById('submit').click();" > 
    <input id="submit" type="submit" style="display: none;" /> 
</form>