2016-05-11 13 views
0

私は2つの送信ボタンを必要とするhtmlフォームを持っています。クリックされた各ボタンはイベントを捕捉し(フォーム提出)、フォームデータを処理し、2つのボタンのどれが押されたかに応じてGUI内を前後に移動する必要があります。同じフォームの2つの送信ボタン(別のアクション)

Javascriptをキャッチする方法が見つかりませんでした。どのボタンがサブミットイベントハンドラで押されましたか。クリックイベントハンドラを使用する場合、このアクションにはフォームは添付されません。何かアドバイス?

答えて

-1

イベントオブジェクトには、イベントをトリガーしたDOMノードへの参照であるtargetというプロパティがあります。クリックされたボタンが含まれているはずです。

+0

はい、 'event.target'はすべてのフォームオブジェクトを入力と2つのボタンのように持ちますが、どのボタンがイベントをトリガーしたかを捕まえる方法が見つかりませんでした。 – Ruben

+0

フォームの送信イベントをリッスンする代わりに、ボタンのクリックイベントにバインドできますか。 –

+0

私は、クリックイベントは、フォームを持っていない場合は、ボタンをイベントとして持って来てください。データを処理するためのフォームが必要です。 – Ruben

-1

2つのボタンに2つの異なる名前を使用して、クリックイベントを取得します。この名前は、指定されたボタンが押されたことを確認して作業させます。

+0

クリックをキャプチャすると、イベントがアタッチされると、クリックされたボタンだけが表示され、フォームのすべての入力は表示されません。私はそれを処理するためのフォームが必要です。 – Ruben

+0

ボタンクリック中にフォームオブジェクトを渡すことができます。 Javascript関数を呼び出してフォームオブジェクトを渡すことができます。 –

+0

あなたはどのように表示できますか? – Ruben

-1

https://jsfiddle.net/0fuq5dhf/1/に示すように:

var form = document.getElementById("frmData"); 
form.addEventListener("click", function(event) { 
    var formData = $('#' + event.currentTarget.id).serialize(); 
    if(event.target.id == "submit1") { 
    //Process for first submit button 
    console.log(formData); 
    } else { 
    //process for the 2nd submit button 
    console.log(formData); 
    } 

}); 

あなたはクリックしてクリックされたボタンに基づいて処理するために、フォームデータをシリアライズされたボタンを決定するために、ターゲットを得ることができます。

+0

データをコードでどのようにシリアライズするかを表示できますか?現時点では、シリアル化するのではなくコンソールにログを記録しています。 –

+1

@Deiva、 'event.target.id'は実際にはボタンIDではなくフォームIDを返します。 – Ruben

+1

ハンドラをどのように接続しているかは、how /どのようなイベントに依存します。あなたがフィドルのURLを見たら、私はフォームのクリックイベントを添付しています。もう1つの方法は、ボタン自体のイベントをアタッチすることです。 – Deiva

関連する問題