2010-12-20 13 views
1

jQueryを使用して顧客情報ページをロードしています。顧客のリストは、その隣にリンクしてあります。jQuery UIダイアログフォーム、正しい変数を送信しない

この機能トリガ
<a href="#" onclick="load_customer(<?php echo $c->id; ?>);return false;">View</a> 

:完璧に動作

function load_customer(id) { 
    $("#dashboard").load('get_info/' + id); 
} 

を。私がロードしているページに、新しい情報を追加するためのjQuery UIモーダルダイアログフォームがあります。

<div id="addinfo"> 
    <form><input type="hidden" name="customer_id" value="<?php echo $c->id; ?>" /></form> 
</div> 

私のjavascript:あなたは顧客を最初に選択した場合

$("#addinfobutton").click(function(){ 
      $("#addinfo").dialog("open"); 
      return false; 
    }); 
    $("#addinfo").dialog({ 
      autoOpen:false, 
      width:400, 
      height:550, 
      modal: true 
    }); 

、それは正しく隠しフィールドを移入したが、その後それも他の顧客を選択した後に同じまま。

新しい顧客ページを読み込むと、フォームもリセットされると思っていましたが、明らかにどこかに保存/キャッシュされています。ページ内の他の場所にIDをエコーすると、正しく表示されます。ちょうど "addinfo" divには表示されません。

ご協力いただきありがとうございます。ありがとう!

+0

新しい顧客ページをajaxで読み込んでいるとしますか? #addinfo divも置き換えているのですか? – ifaour

答えて

1

jQueryのダイアログのいけないリロードあなたがそれらを開くときにあなたのためのコンテンツ。私はダイアログが開いているときにダイアログがオンであるdivの内容を置き換える(またはその中のいくつかの値を調整する)AJAX呼び出しをする傾向があります。

隠しフィールドが必要な場合は、ダイアログ内に配置しません。ダイアログの外から値を取得できるはずです。

0

さらに調査した後、ダイアログが呼び出された後にクライアントサイドにキャッシュされているようです。だからこそ、私はちょうどpopup divのID名の最後にcustomerIdを追加したので、各顧客ページには一意のダイアログIDがあります。

しかし、それぞれのダイアログをキャッシングしている場合、かなり開いているとパフォーマンスが低下することはありませんか?どのようにフルページの更新を行うことなくそれらをクリアすることができますか?私は、これは新しいインスタンスを保証するために、それを閉じた後、ダイアログを破壊するであろう、とにかく... #addinfo div要素が更新された場合、それは新しいコンテンツをキャプチャする必要がありますね

0

が作成されます。

$("#addinfobutton").click(function(){ 
    openDialog('#addinfo'); 
    return false; 
}); 
function openDialog(elm) { 
    $(elm).dialog({ 
     autoOpen:true, 
     width:400, 
     height:550, 
     modal: true, 
     close: function() { 
      $(this).dialog('destroy'); 
     } 
    }); 
} 
+0

ありがとう!しかし、このコードでは、それは明示的にelementで状態をダイアログではないので、実際にはdivをページに表示します。また、前にダイアログを破棄しようとしたときに、他のクリックでは機能しませんでした。 – TerryMatula

+0

私はここであなたを得られなかったのですか? "それは明示的に要素がダイアログではないので、実際にページにdivを表示します"これは上のコードが上で働いたかどうかを示していますか? :-)それが動作する場合は、答えを受け入れてくださいあなたを助けることができるように詳細を精緻化しないでください。 – ifaour

+0

申し訳ありません、それは動作しませんでした。私はそれを使用すると、ダイアログのフォームを含むdivがページに表示されます。私は、ボタンをクリックしたときに表示させたいだけです。 – TerryMatula