2012-02-22 5 views
0

すべて、 jQueryダイアログのモーダルウィンドウで電子メールを送信しようとしています。ウィンドウを開いて正しく入力することができますが、ダイアログウィンドウを開くといくつかの電子メールアドレスを入力しようとしています。jQueryダイアログ、動的入力を取得する

<div id="dialog-form" title="Email Vendors"> 
<form> 
<select data-placeholder="Vendors to Email" style="width:350px;" multiple class="chzn-select"> 
<div id="email_options"> 
<option selected>Email Address 1</option> 
<option selected>Email Address 2</option> 
</div> 
</select> 
</form> 
</div> 

私はセッション変数にいくつかの電子メールアドレスを格納していると私は起こるしたい何がある:そして、ここで私のダイアログフォームれる

$("#dialog-form").dialog({ 
    autoOpen: false, 
    height: 600, 
    width: 750, 
    modal: true, 
    show: 'slide', 
    buttons: { 
     "Send Email": function() { 
       var message_to_send = $("#message_to_vendors").val(); 
       alert(message_to_send); 
       var vendor_ids = $("#email_vendor_ids").val(); 
       alert(vendor_ids); 
       $.post("send_vendor_emails.php", { email_vendor_ids: vendor_ids, message_to_vendors: message_to_send }, function(data) { 
        alert("The data is: "+data); 
        if(data=="yes"){ 
         $("#dialog-form").dialog("close"); 
        } 
       }); 

     }, 
     Cancel: function() { 
      $(this).dialog("close"); 
     } 
    }, 
    close: function() { 
     allFields.val("").removeClass("ui-state-error"); 
    } 
}); 

:ここでjQueryのダイアログウィンドウを開くことですダイアログボックスをクリックして開くと、Session変数に電子メールアドレスを入力できます。どうすればダイアログボックスでそれを行うことができますか?

事前にお問い合わせいただきありがとうございます。

答えて

0

あなたのセッションからの電子メールをダイアログボックスのマークアップに印刷するだけでいいと思います。 select要素のオプションとして追加する必要がありますか?

<div id="dialog-form" title="Email Vendors"> 
<form> 
<div id="email_options"> 
<select data-placeholder="Vendors to Email" style="width:350px;" multiple class="chzn-select"> 

<?php foreach ($_SESSION['emails'] as $e): ?> 
    <option><?php echo $e; ?></option> 
<?php endforeach; ?> 
</select> 
</div> 
</form> 
</div> 

メールが$_SESSION['emails']に配列として格納されているとします。また、有効なXHTMLのために、あなたのemail_options divをselectの外に移動しました。

更新

あなたがセッションにメールを追加するとき、あなたのセッションを維持するために、いくつかのJavaScriptを使用する必要があり、ユーザーはページがロードされた後、その場でのセッションにメールを追加することができますことを明らかにしているためとダイアログボックスが同期されます。このようなもの:

/* Where ever you update the session with more emails, also do this 
Note, this is using the modified markup from my above example 
(select is child of #email_optons) */ 

var new_email = ''; // Set this to the value of the email which is being added to the session 

$('#email_options select').append($('<option>' + new_email + '</option>')); 
+0

はい、ページが読み込まれたときにセッションが取得されます。ページ上に移動すると、さらに多くのセッション変数を作成するチェックボックスを選択することができます。ダイアログボックスが開いたときではなく、ページが読み込まれてから表示されません。 – user1048676

+0

元の質問でこれを明確にする必要があります。私はこれを反映するために答えを更新しましたが、あなたがPHPセッションか他の何かを参照しているかどうかはまだ100%明確ではありません。 –

+0

ありがとうございました。私はPHPセッションを参照していました。しかし、追加は機能していません。なぜそれをやっていないのだろうか? – user1048676

関連する問題