Как вызвать диалоговое окно jquery по нажатию кнопки, а не по документу. - PullRequest
1 голос
/ 17 апреля 2011

Я ничего не знаю о jquery, и я только что скачал все файлы для jqueryUIdialog.

Я пытаюсь работать с ним целый день.

Iесть форма, где пользователь захватывает некоторые вещи, а также может нажать на кнопку, которая открывает другую форму.

Я хочу открыть вторую форму в диалоговом окне, и когда форма будет отправлена, вернитесь к первой форме и продолжите сбор других сведений.

Проблема в том, что я пробовалпередать данные, которые были захвачены в первой форме, с помощью: document.getElementById, но там ничего нет, так как функция диалогового окна вызывается для document.ready, когда еще ничего не было захвачено.

Есть лиспособ загрузить страницу в диалоговом окне при нажатии кнопки или ссылки, а не в document.ready?

Вот мой код JavaScript:

$(document).ready(function() {
    var $dialog = $('<div></div>')
    var day = document.getElementById('day').value;

    var qry = '?day=' + day;

    .load('orderSandwich.php'+qry)
            .dialog({
                autoOpen: false,
                title: 'Sandwitch Order',
                width: 700
            });

   $('#sandwich').click(function() {
       var day = document.getElementById('day').value;
       $dialog.dialog('open');
       // prevent the default action, e.g., following a link
       return false;
   });
});

Значение дня пусто, потому что пользовательЯ не получил возможности положить что-либо до документа. Уже сработало.

Первый код формы:

<input type="text" name="day" id="day" />
<button id="sandwich">Sandwich</button>

Надеюсь, вы понимаете мой вопрос.

Спасибо,

Сигал

1 Ответ

1 голос
/ 17 апреля 2011

Есть пара проблем с вашим кодом.Вы должны следовать нескольким урокам jquery, чтобы познакомиться.

Первый

var day = document.getElementById('day').value;

Эта строка должна быть в обработчике кликов.Вы можете удалить его отсюда.Кроме того, вы можете просто использовать

var day $('#day').val();//jquery way of doing it

Тогда

.load('orderSandwich.php'+qry)

Вы фактически не прикрепили это к элементу DOM.Посмотрите на API для использования: http://api.jquery.com/load

И

var $dialog = $('<div></div>')

Я на самом деле не пробовал, но я уверен, что вынеобходимо подключить его к элементу DOM, прежде чем вы сможете использовать DIV (люди из JS, поправьте меня, если я ошибаюсь).Вы на самом деле просто создаете элемент DIV в памяти.Он не привязан к дереву DOM.

Еще одна вещь, вы, вероятно, хотите переместить .load также в некоторый обработчик событий.Поскольку я сомневаюсь, что вы хотите вызвать страницу PHP, как только DOM будет готов.

...