1

$('#myForm').seralize()を介してサーバー側コンポーネントに引数を渡すために使用 しています$.ajax()が、jqueryuiダイアログが使用するdivにフォーム要素を含めると、は$('#myForm').seralize()そのdiv内のフォーム要素の変更を認識しません。

私のjsfiddleの例をご覧ください。

4

3 に答える 3

1

jQuery UIダイアログを使用すると、実際には$('#myForm')が再度ラップされ、レベルのすぐ下に移動します。

ダイアログでfirebug/chrome devtoolを使用して「要素の検査」を実行できます。ダイアログ要素がフォーム要素に属していないため、チェックボックスデータがありません。

コールバックをバインドするか、別のフォームを作成して、次のようにシリアル化された文字列を取得できます。

$('#form_1').serialize() + '&' + $('#form_2').serialize();

お役に立てば幸いです、乾杯。

于 2012-08-07T18:34:42.290 に答える
1

jQuery UIダイアログは、bodyタグの最初または最後(どちらかは忘れます)に配置されます。つまり、これらの要素はフォームの一部ではなくなります。HTML5を使用している場合は、これらの入力に新しい属性を与えることで修正できます。form="myForm"

デモ: http: //jsfiddle.net/vXLve/7/

于 2012-08-07T18:35:58.570 に答える
1

これは、完全に別の場所 (ページの下部にあると思います) に複製することによって、 から$('#dialog').dialog()移動#dialogするためです。#myform <div>

以下を使用して、ダイアログで入力を見つけることができます。

$('#dialog :input').serialize();

おそらく、2 つのセットを分割して、一緒にサーバーに送り返すことができます。

...
data: { 
    common: $('#myForm').serialize(),
    dialog: $('#dialog :input').serialize();
},
...

または、次のように組み合わせることもできます。

...
data: $('#myForm').serialize() + '&' + $('#dialog :input').serialize(),
...

更新されたjsFiddle

于 2012-08-07T18:42:39.990 に答える