0

ページが変更されるため、type="submit" は必要ありません -
私は ajax を介して送信しています。

<input type="button" value="This is a submit button" name="submit1" onClick="submitMe( this.form )">
<input type="button" value="Another submit button" name="submit2" onClick="submitMe( this.form )">
<input type="button" value="Yet another submit button!" name="submit3" onClick="submitMe( this.form )">

ただし、すべてのボタン名は渡されたフォーム変数として表示されます-チェックボックスや送信ボタンなど、クリックされたボタンのみが渡されると思います...(選択されていない場合は渡さないでください)

どのボタンが選択されたかを判断するにはどうすればよいですか - ボタンによってアクションが異なるため、これが必要です。

プロトタイプ「AJAX.UPDATER」を使用してフォームを処理します。

JSはこんな感じ…

function submitMe( frm ) {
    var div = 'msgDiv';
    var url = 'mypage.aspx';
    var pars = Form.serialize( frm ); 
    var myAjax = new Ajax.Updater( div, url, { asynchronous:true, method:'post', parameters:pars    });
}

どうも

4

3 に答える 3

1

HTML コードでは、名前の代わりに id 属性を使用して、クリックされたボタンの ID を関数に渡すことができます...

<input type="button" value="This is a submit button" id="submit1" onClick="submitMe( this.id)">
<input type="button" value="Another submit button" id="submit2" onClick="submitMe( this.id)">
<input type="button" value="Yet another submit button!" id="submit3" onClick="submitMe( this.id)">

次に、JSでformIdを取得できます...

function submitMe(eleId) {
    var clickedButton = eleId // use it as you want
    var frm = $(eleId).up('form'); // this will give the parent form 
    var div = 'msgDiv';
    var url = 'mypage.aspx';
    var pars = Form.serialize( frm ); 
    var myAjax = new Ajax.Updater( div, url, { asynchronous:true, method:'post', parameters:pars    });

}

于 2013-03-25T00:46:10.037 に答える
1

次のようなことができます。

<input id="a" type="button" value="This is a submit button" name="submit1" onClick="submitMe(this.id)">
<input id="b" type="button" value="Another submit button" name="submit2" onClick="submitMe(this.id)">
<input id="c" type="button" value="Yet another submit button!" name="submit3" onClick="submitMe(this.id)">

そしてあなたのJSで

submitMe(id){
  switch(id)
  {
  case 'a':
    -----
    break;
  case 'b':
    -----
    break;
  }
}
于 2013-03-22T16:38:35.267 に答える
1

おそらく、通常の属性の代わりにobserveまたはメソッドを使用する必要があります - あなたのhtmlにはクラスを追加してくださいon()onclick

<input type="button" value="This is a submit button" class="submitbutton" name="submit1" >
<input type="button" value="Another submit button" class="submitbutton" name="submit2" ">
<input type="button" value="Yet another submit button!" class="submitbutton" name="submit3" >

「myform」を指定してオブザーバーをフォームにアタッチするとid、「クリック」イベントがボタンから親フォームにバブルアップしfindElement()、イベントのメソッドを使用してクリックが発生したボタンを見つけることができますそのまま通過。この例ではon()、CSS セレクターを指定してイベント処理の範囲を制限できるので、このメソッドを使用します。そうしないと、クリックするたびにハンドラーが起動します。

$('#myform').on('click','.submitbutton',function(event){
    var clickedbutton = event.findElement();

    //then you can fire your submitMe() function
    submitMe(this);
});

on()メソッドでthis観察されている要素です

于 2013-03-22T19:39:35.350 に答える