Диалоговое окно jQuery UI: отправка формы с помощью кнопки диалога - PullRequest
1 голос
/ 31 октября 2011

В моем веб-приложении у меня есть список редактируемых объектов, каждый со ссылкой «редактировать». Теперь, когда вы нажимаете ссылку «редактировать», появляется диалоговое окно jQuery UI и отображается форма редактирования для этого объекта. Внизу находятся кнопки «Сохранить» и «Отмена». когда нажата кнопка «сохранить», форма должна быть отправлена ​​на сервер. Это то, что я не могу сделать.

Некоторые особенности заключаются в том, что форма редактирования загружается в диалоговое окно div через ajax при нажатии «edit» на одном из элементов списка, поэтому, возможно, это как-то связано с этим. Вот некоторые выдержки из кода приложения. Я работаю с Ruby on Rails 3.1.

Вид:

<html>
...
<body>
    ...
    <div id="edit-campaign"></div>
    <script>
    $(function() {
    var buttons = { 
            "Save": function() { $("#edit-campaign-form").submit(); },
            "Cancel": function() { $("#edit-campaign").dialog("close"); }
              };
    createDynamicDialog("edit-campaign", buttons, "edit-campaign", "Edit Campaign");
    });
    </script>
</body>
</html>

Функция createDynamicDialog (в другом файле скрипта): здесь я заставляю каждую ссылку «редактировать» загружать свои формы редактирования (URL в атрибуте href) в диалоговые окна пользовательского интерфейса.

createDynamicDialog = function(divId, buttons, cls, title) {
    $("." + cls).click(function(e) {
        e.preventDefault();
        var dialogOptions = {   
                                title: title,
                                width: 800,
                                height: 500,
                                modal: true,
                                autoOpen: true,
                                buttons: buttons
                            };
        var link = $(this);
        $("#" + divId).load(link.attr('href')).dialog(dialogOptions);
    });
}; 

При этом кнопка «отмена» работает нормально (закрытие диалога), но форма не отправляется, когда я нажимаю «сохранить». Почему это может быть? У меня есть похожий диалог, который загружается (часть ajax) при загрузке страницы, и переключается только через кнопку. Это отлично работает. Проблема только в том случае, когда загрузка формы осуществляется по событию «click». Почему?

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

1 Ответ

0 голосов
/ 31 октября 2011

Вы можете попробовать изменить эту строку кода:

"Save": function() { $("#edit-campaign-form").submit(); },

на

"Save": function() { $("#edit-campaign form").submit(); },

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

update / edit

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...