5

MvcのAjax.BeginFormヘルパーのOnBeginおよびOnCompleteルーチンでformdom要素を操作しようとしています。

現在私はこれを持っています:

@using (Ajax.BeginForm("Contact", "Home", new AjaxOptions { OnBegin = "handleOnBegin" }))

しかし、OnBegin / OnCompleteハンドラー内で、フォームdom要素を操作したいと思います-これは可能になるのでしょうか?それらのハンドラーに渡された引数を確認しましたが、何も表示されません。

function handleOnBegin(a, b){
  var f = <get form>;
  animateForm(f);
}

ハンドラーで「this」を渡そうとしましたが、XHRオブジェクト(または同様のもの)を渡すだけのようです...また、IDを渡して、確信しているのでコードを追加するのは気が進まないです。もっと簡単な方法があります。

4

3 に答える 3

6

Ajax.BeginFormの4番目のパラメーターとしてのフォームのID:

@using (Ajax.BeginForm("Contact", "Home", 
        new AjaxOptions { OnBegin = "forms.onBegin", OnComplete = "forms.onComplete" },
        new { id = "FormName" }))

次に、ID(#FormName)でフォームを選択できます。

編集:

または、この質問への回答を参照してください

于 2011-07-30T16:08:23.810 に答える
1

私も議論を見て、箱から出して役立つものは何も見えません。もう1つのオプションは、ページのボタンにonclickイベントハンドラーを追加する関数をライブラリに追加することです。何かのようなもの

var clickedBtnID = null;
$(document).ready(function()) {
    $(input[type=submit]).click(function() {
        clickedBtnID = $(this).attr("id");
    }
}

clickedBtnID次に、コールバック関数からアクセスできます。完璧な解決策ではありませんが、十分に一般的かもしれません。

于 2011-07-31T10:45:46.007 に答える
0

使用するDOM要素にCSSクラスを指定します。したがって、フォームが部分的であり、たとえば他の要素にネストされている場合でも、CSSクラスで要素を見つけることができます。

このようなもの:

$form.find(".labelToUpdate").text(response.labelText);
于 2011-07-30T16:16:41.020 に答える