2012-02-22 2 views
0

Все, Я пытаюсь отправить электронное письмо с помощью модального окна диалога jQuery. Я могу получить окно, чтобы заполнить правильно и все такое, но я пытаюсь заполнить некоторые адреса электронной почты, когда я открываю диалоговое окно. Вот JQuery, чтобы открыть диалоговое окно:jQuery Диалог, но получить динамические входы

$("#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"); 
    } 
}); 

Тогда вот мой диалог форма:

<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> 

Я храню несколько адресов электронной почты в переменных сеанса и то, что я хотел бы случиться когда я нажимаю диалоговое окно, чтобы открыть его, чтобы заполнить адреса электронной почты в переменных сеанса. Как я могу это сделать с помощью диалогового окна?

Спасибо за любую помощь заранее!

ответ

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']. Я также переместил ваш email_options div вне выбора для действительного XHTML.

Update

Поскольку вы разъяснено, что пользователи имеют возможность добавлять электронные письма сессии на лету после загрузки страницы, когда вы добавляете электронную почту к сессии, чтобы сохранить вашу сессию, вы должны использовать некоторые 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

Вы должны прояснить это в своем первоначальном вопросе. Я обновил ответ, чтобы отразить это, хотя я все еще не на 100% понятен, ссылаетесь ли вы на сеанс PHP или что-то еще. –

+0

Спасибо, да, я имел в виду сессию PHP. Однако приложение не работает. Любые идеи, почему это не будет сделано? – user1048676

Смежные вопросы