Получение переменной php и передача ее в диалоговое окно jQueryUI - PullRequest
0 голосов
/ 21 ноября 2011

Я использую диалоговый виджет jQueryUI на разрабатываемом веб-сайте. По сути, на странице представлен список друзей и ссылка для отправки сообщения каждому из них. Вот фрагмент HTML.

...
<td><?php echo $realname; ?></td>
<td><?php echo $username; ?></td>
<td><a href="#" id="opener">Send Message</a></td>
...

Мой JavaScript выглядит так:

$(document).ready(function() {
 var $dialog = $('#dialog')
  .dialog({
   autoOpen: false,
   resizable: false,
   modal: true,
   height: 350,
   dialogClass: 'no-close',
   draggable: false
 });
 $("#opener").click(function() {
   $dialog.dialog('open');
   return false;
 });
 $('#closedialog').click(function() {
   $dialog.dialog("close");
   return false;
 });
});

И, наконец, в нижней части моего html-кода это выглядит так:

<div id="dialog" title="Send a message"><form action="<?php echo $currURL; ?>">
 <p>To: {would want for something like "RealName (username)" to appear here}</p>
  <div align="center">
  <textarea cols="40" rows="10"></textarea>
  </div>
 <p align="right"><span class="button" style="text-align: right;">
  <input type="submit" value="Submit" /><button id="closedialog">Cancel</button>
 </span></p>
</form></div>

Скажем, первый человек в вашем списке друзей - Джон Смит (Джонсмит), а следующий - Джейн Смит (Дженесмит). Можно ли передать значения $ realname и $ username только для этой строки таблицы, чтобы она также была распечатана в виджете диалога jQuery? - Или - У вас есть предложения, как сделать это лучше / эффективнее?

Ответы [ 2 ]

2 голосов
/ 21 ноября 2011
  • Поместите несколько заполнителей в ваш диалог, найдите их и сохраните ссылку на них.
  • Измените id="opener" на class="opener"
  • Всякий раз, когда .openerнажата ссылка, посмотрите в ТД вокруг нее значения, которые вы ищете, и запишите их в указанные заполнители

Демо http://jsfiddle.net/uHXbV/5/

Это может быть дополнительно улучшено с помощью data- attrs или чего-то подобного, но демонстрация имеет минимальное влияние на исходный код, чтобы его было легко понять.

0 голосов
/ 21 ноября 2011

Вместо привязки клика к #opener у вас должен быть обработчик onclick для вашего тега привязки, который вызывает функцию с этими аргументами.Затем эта функция установит содержимое ваших диалоговых элементов, которые используются диалоговой функцией.Может быть, что-то вроде этого:

<td><a onclick="openDialog('<?= $realname; ?>','<?= $username; ?>');">Send Message</a></td>

Тогда ваша функция будет:

function openDialog(realname, username) {
    // set the contents of you dialog elements.
    $('#messageRealname').text('realname');
    $('#messageUsername').text('username');
    // now open the dialog
    $dialog.dialog('open');
}

Тогда

...