проблема с плагином jQuery.form при повторном использовании - PullRequest
0 голосов
/ 23 июня 2011

Я пытаюсь впервые использовать плагин jQuery form на вкладке jQuery-ui. Я могу загрузить форму во вкладку и отправить форму. Запрос проходит успешно, и данные добавляются в базу данных, как и планировалось. Поскольку он перенаправляет на чистую версию формы, HTML снова помещается во вкладку, но я получаю ошибку javascript: $ is not defined ссылается на строку, где jQuery впервые используется на странице формы.

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


Вот что я сейчас делаю:

Моя форма

<div id="new-shift" class="${type.name}">

    <h2 id="crudBlankTitle">&{'crud.blank.title', type.modelName}</h2>

    <div class="objectForm">
    #{form action:@create(), id: 'new-shift-form', enctype:'multipart/form-data'}
        #{crud.form /}
        <p class="crudButtons">
            <input type="submit" name="_save" value="&{'crud.save', type.modelName}" />
            <input type="submit" name="_saveAndAddAnother" value="&{'crud.saveAndAddAnother', type.modelName}" />
        </p>
    #{/form}
    </div>

</div>

, который загружается в элемент вкладок jQuery-ui через ajax

<div id="tabs">
<ul>
    <li>#{a @Shifts.blank()}<span>New Shift</span>#{/a}</li>
    <!-- above line renders as 
    <li><a href="/shifts/new"><span>New Shift</span></a></li>
    -->
</ul>
</div>

и после загрузки подключается плагин Form

<script>
$(function() {
        var tabs = $("#tabs");
        tabs.tabs({
                load: function (event, ui) {
                    $('#new-shift-form').ajaxForm({
                        target: '#new-shift'
                    });
                }
        });
});
</script>

Обновление : я уже пробовал это, используя ajaxSubmit, но результат тот же. «$ не определено» при второй загрузке. Использование live вместо применения плагина формы при загрузке также не помогло. Я действительно в недоумении, что попробовать дальше.

$('#new-shift-form').live("submit", function() {
    $(this).ajaxSubmit({
        target: '#new-shift',
        clearForm: true,
        replaceTarget: true
    });
    return false;
});

1 Ответ

0 голосов
/ 25 июня 2011

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

...