Динамическое диалоговое окно jQuery - PullRequest
1 голос
/ 20 февраля 2012

Я часто бываю здесь и нахожу это место очень полезным. Моя первая публикация, и я надеюсь, что кто-то может мне помочь.

У меня есть страница, создающая несколько ссылок. Когда вы нажимаете на ссылку, открывается конкретное диалоговое окно, относящееся к этой ссылке. Этот диалог содержит форму со всеми данными, относящимися к этому идентификатору ссылки. Но когда я отправляю, кажется, что данные, принадлежащие первой ссылке, отправляются, в зависимости от того, какое диалоговое окно открыто.

Когда я нажимаю на ссылку, вот код, который открывает и правильно заполняет диалоговое окно в соответствии с $link.attr('href') Кнопка сохранения выполняет $('#prefForm').submit(); Теперь у меня возникло ощущение, что когда я нажимаю на ссылку, он открывает все диалоговые ссылки, сохраняя их в фоновом режиме, создавая таким образом prefForm с несколькими идентификаторами, поэтому первая для первой ссылки отправляет свои данные

Я не могу назначить разные идентификаторы, так как эти формы генерируются динамически, и идентификатор будет неизвестен.

Кто-нибудь знает, как предотвратить загрузку других данных только по требованию, а не всех в фоновом режиме?

    $(document).ready(function() {
        $('#bidders td a').each(function() {
            var $link = $(this);
            var $dialog = $('<div></div>')
                .load($link.attr('href') + ' #content')
                .dialog({
                    autoOpen: false,
                    title: $link.attr('title'),
                    width: 600,
    buttons: [
        {
            text: "Cancel",
            className: 'cancelButtonClass',
            click: function() {
                $dialog.dialog('close');
            }
        },
        {
            text: "Save",
            className: 'saveButtonClass',
            click: function() { 
                 $('#prefForm').submit();
                 $dialog.dialog('close');
            }
        }

Ответы [ 2 ]

0 голосов
/ 20 февраля 2012

Теперь у вас есть .each в $(document).ready(function() {, что означает, что вы создаете GET для каждого соответствующего элемента.

Может быть, вы могли бы привязать событие клика к каждому элементу и отправить GET и создать диалог о событии?

$(document).ready(function() {
    $('#bidders td a').click(function() {
        var $link = $(this);
        var $dialog = $('<div></div>')
            .load($link.attr('href') + ' #content')
            .dialog({
                autoOpen: false,
                title: $link.attr('title'),
                width: 600,
buttons: [
    {
        text: "Cancel",
        className: 'cancelButtonClass',
        click: function() {
            $dialog.dialog('close');
        }
    },
    {
        text: "Save",
        className: 'saveButtonClass',
        click: function() { 
             $('#prefForm').submit();
             $dialog.dialog('close');
        }
    }
0 голосов
/ 20 февраля 2012

Вы используете .each () - чтобы загрузить их все?

$('#bidders td a').each(function() {

Почему бы не изменить его на .click ()?

$('#bidders td a').click(function(event) {
   event.preventDefault();
       var $link = $(this);
        var $dialog = $('<div></div>')
            .load($link.attr('href') + ' #content')
            .dialog({
                autoOpen: false,
                title: $link.attr('title'),
                width: 600,
buttons: [
    {
        text: "Cancel",
        className: 'cancelButtonClass',
        click: function() {
            $dialog.dialog('close');
        }
    },
    {
        text: "Save",
        className: 'saveButtonClass',
        click: function() { 
             $('#prefForm').submit();
             $dialog.dialog('close');
        }
    }
...