0

これは私を怒らせています。私のページには、カラーボックスで開く div があります。ユーザーが div 内のリンクの 1 つをクリックすると、コード (以下) にイベントが発生し、隠しフィールドにデータが入力され、サーバー ボタンをクリックしてコード ビハインドが実行されます。

問題は、IE(9) では、最初の試行でサーバー ボタンをクリックしないことです (はい、クライアントのクリック イベントに移動します)。奇妙なことに、Chrome と FF では問題なく動作するようです。

$(document).on('click', '.link', function (e) {
    e.preventDefault();
    var thisID = $(this).attr('href').replace('#ca', '');
    $("#hiddenField").val(thisID );
    $("#button1").submit();
});

カラーボックスで開く div 内のリンクが動的に読み込まれることに言及する価値があるかもしれません。ただし、リンクのクリック イベントが正常に機能しているため、これは影響するはずです。

どんな助けでも大歓迎です。

4

4 に答える 4

1

適切な形式は、送信ではなく、でボタン送信をトリガーすることであるように思われます.trigger()。定義上、追加のパラメーターを指定しない.submit()は、ボタンではなくフォームで実行する.trigger('submit')をミラーリングします。

例えば:$("#button1").trigger("click");

これが上のドキュメントです.trigger()

私にとって、フォームを送信するためのより論理的な方法は、ボタンを完全にバイパスして、実際のフォーム自体を.submit()することです。これを行わない理由はいくつかあるかもしれませんが、ユーザーが「混乱」する可能性のある要素に依存するよりも簡単に思えます。

于 2012-12-05T23:46:48.620 に答える
0
e=e?e:window.event;
if($.browser.msie)
{ 
  e.returnValue=false; 
  e.cancelBubble=true;
 }
else
 {e.preventDefault();}
于 2012-12-05T14:22:05.503 に答える
0

代わりにこれを試してください:

$(document).ready(function() {
    $('.link').click(function (e) {
        e.preventDefault();
        var thisID = $(this).attr('href').replace('#ca', '');
        $("#hiddenField").val(thisID);
        $("#button1").submit();
    }
)});
于 2012-12-05T14:22:15.747 に答える
0

あなたの答えは[fiddle] [1]です。すべてのブラウザで正常に動作します。

あなたのコードに問題はないようです

ドキュメント準備完了関数のコードを移動しただけです

于 2012-12-05T15:11:41.063 に答える