1

フォームにボタンがあります。そのボタンをクリックすると、最初にサーバー上のWebページにajaxpostし、指定されたdivの内部htmlを取得し、最後にそのhtmlをjqueryuiダイアログを表示する別のdivに追加します。コードは次のとおりです。

$('#window').html(content).
dialog({
    title: title,
    show: 'drop',
    hide: 'drop',
    width: 400,
    buttons: buttons,
    position: { my: 'center', at: 'center', of: window }
}
);

そして、投稿されたページの div の内部 html は次のとおりです。

  <div id="cardOrder" class="cardOrder-div">
        <form runat="server" id="frmAjax" >
        <table class="cardOrder-tbl">
        ......
        </form>
  </div>

Chrome と Opera に問題があります。ボタンを初めてクリックし、上記の html コンテンツを含む jqueryui ダイアログを表示すると、「フォーム」タグがありません。しかし、次にダイアログを表示すると、フォームタグが追加されます。フォームタグがないと送信できません。Firefox と IE にはこの問題がありません。フォーム タグは、最初のダイアログ ショーから直接追加されます。

編集:コードをデバッグして、ajax 応答から返された html コンテンツに form タグが含まれているかどうかを確認すると、そこに表示されます。しかし、コンテンツが div に追加されると、どういうわけか消えます。

4

1 に答える 1

1

デフォルトでは、jquery ダイアログ ボックスはbodyタグの末尾に追加されるため、ダイアログ ボックスにあるコントロールはフォームの一部ではなく、投稿されません。次のようなものを追加する必要があるかもしれません。

$('#DIALOGID').dialog({
        open:function(event, ui){
            $(this).parent().appendTo('form');
        }
    });
    $('#DIALOGID').dialog('open');

これにより、フォーム タグの末尾にダイアログ HTML が追加され、ダイアログ内のコントロールにコード ビハインドでアクセスできるようになります。

また、ページ内に複数の Form タグを含めることはできないと思います。

この答えがまったく役に立たない場合を除きます

于 2012-12-21T11:31:42.207 に答える