2011-07-25 13 views
0

JQuery ajaxを使用してフォームを送信した後、ボタンをクリックする際に問題が発生します。上記のボタンは、実際にサードパーティ製のツールによってDOMに入れ、ページ上で、我々はボタンを非表示にして、模倣jQueryのボタンを生成することによって、それらを引き継ぐレンダリングされIE上でajaxフォームを送信した後にJQueryボタンがクリックされない

<div> 
    <!-- normal HTML buttons that are overridden by JQuery for styling purposes --> 
    <!-- Here, on render, the HTML button is hidden and a similar JQuery button is shown on  the DOM --> 
</div> 
<div> 
    <!--- Stuff generated by a third-party tool --> 
</div> 
<div> 
    <!--- Our form loaded using JQuery --> 
</div> 

:ここに私のHTMLは次のようになります元のボタンの動作。したがって、基本的に、ユーザーはフォーム内のサードパーティのものを記入し、フォームに記入してからJQueryボタンをクリックします。まず、フォームをサーバーに送信し、オリジナルのボタンをクリックしてサードパーティのツールそれ自身のものを提出することができます。

clickoriginalbutton = function(passedButton) { 
    $(passedButton).click(); 

}, 
//save our data 
submitourform = function(buttonreference) { 
    $('#our_form').ajaxForm(options); 

    $('*').button('disable'); 
    $('#our_form').ajaxSubmit({ 
     iframe: true, 
     dataType: 'json', 
     success: function(data){ 
      if (data.status == 'success') { 
         clickoriginalbutton (getOrigButton(buttonreference)); 
       };            
      } 
     }); 
} 

ご覧のとおり、オリジナルのボタンは、フォームの保存が成功するとクリックされます。 FFでボタンのクリックは正常に機能しますが、IEでは失敗します。フォームが送信され、成功したことがわかりますが、IEは元のボタンのクリックを起動しません。私はボタンへのすべての参照が正常であることを確認しました。私はここのフォーラムを検索し、ライブ/デリゲートなどを見つけましたが、私のボタンは常にそこにあるので、彼らが私のために働くかどうかはわかりません。 ajax - 実際には何も経由してレンダリングされません。最初の負荷の後にajax。だから、なぜそれがFFで動作している間にボタンのクリックがIEで動作していないのか分かりません。なぜこのようなことが起きているのか。

おかげで、 ニティン

+0

clickoriginalbuttonの内容は何ですか? jQueryには、トリガーメソッドがあります。このメソッドを使用すると、オブジェクトの添付ハンドラーを呼び出すイベントを発生させることができます。ハンドラが起動されていない場合、ハンドラがイベントにアタッチされないため、ハンドラが何とかクリアされているかどうかを調べる必要があります。 – enamrik

+0

clickoriginalボタンの内容は、postとまったく同じです。渡されたボタンのclick()関数を呼び出すだけです。 clickoriginalbuttonは、ajaxサブミットがない場所でも呼び出され、これらのシナリオではIE上でも問題なく動作します。フォームを送信し、ボタンがクリックされないというclickorignalボタンを呼び出すだけです。私がsubmitourform関数からajaxSubmit呼び出しを削除すると、ボタンはうまくクリックされます。また、私のポストでは、フォームプラグインの使用法が示されていますが、私は同じ結果を持つJQuery .ajaxも試しました。ボタンはIEではクリックしないだけです。 – legendofawesomeness

+0

IEのように見えますが、JQueryはクリックイベントを元のボタンにバインドできませんでした。私はclickoriginalbuttonsコードを変更し、通常のjavascriptのクリックを使用し、それはIEで動作するようになった。これで私のコードは次のようになります:var origButton = document.getElementById($(daButton).attr( "id")); origButton.click();問題は現在解決されています:) – legendofawesomeness

答えて

0

IEのように見えるので、JQueryはクリックイベントを元のボタンにバインドできませんでした。私はclickoriginalbuttonsコードを変更し、通常のjavascriptのクリックを使用し、それはIEで動作するようになった。これで私のコードは次のようになります:var origButton = document.getElementById($(daButton).attr( "id")); origButton.click();問題は現在解決されています:)

0

あなたはjQueryの '.live()' 関数を使用してみましたか?あなたは、ボタンがDOMに挿入されているので、イベントはページの読み込みにのみバインドされるので、クリック機能は機能しません。 .live()を使用すると、すでに存在する、または将来存在するすべてのDOM要素のイベントがバインドされます。

+0

こんにちはジェイミー、あなたの答えをありがとう。私はここに投稿する前にlive()を試してみましたが、私のためにはうまくいきませんでした。ボタンがオンザフライに挿入されていなかったからです。とにかく、私の最後のコメントごとに、私は問題をjqueryの代わりにdocument.getElementById(mybuttonid).click()を使用して回避した。もう一度ありがとう。 – legendofawesomeness

+0

心配する必要はありません。あなた自身が答えを投稿し、ただ混乱を止めるためにそれを受け入れることをお勧めします。 – Jamie

+0

絶対に、私の特権に基づいてロックする期間を乗り越えるのを待っていただけです。 :) – legendofawesomeness

関連する問題