jQuery protectDefault не работает в форме, которую я добавил с помощью другого вызова ajax - PullRequest
0 голосов
/ 04 февраля 2019

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

По какой-то причине, когда я нажимаю кнопку удаления, меня перенаправляют на deleteurl ajaxзвонок я использую для удаления данных из базы.Когда я перезагружаю страницу и нажимаю кнопку удаления, она работает нормально.

Кто-нибудь знает, почему это происходит?

Добавляемая строка:

<tr>
    <td>test</td>
    <td>
        <form class="deleteBuildingForm" method="POST" action="http://127.0.0.1:8000/buildingimage/42" accept-charset="UTF-8">
            <input name="_method" type="hidden" value="DELETE">
            <input name="_token" type="hidden" value="EEV90wmDNLMd8hg9ilh6zdDAjVShXW9bfOCXdvml">
            <button type="submit" class="btn btn-danger">
                <i class="far fa-trash-alt"></i>
            </button>
        </form>
    </td>
</tr>

МойКод запроса:

$('.deleteBuildingForm').on('submit', function(e) {
    e.preventDefault();

    axios.delete($(this).attr('action'), []).then(response => {
        $(this).closest('tr').remove();

        $('.successMessages').hide();
    });
});

1 Ответ

0 голосов
/ 04 февраля 2019

Я думаю, что проблема в том, что ваши новые строки не имеют обработчиков событий, связанных с ними, потому что они были созданы динамически.

Привязка событий к динамически создаваемым элементам?

Попробуйте добавить обработчик событий в документ, который всегда будет существовать.

$(document).on('submit','.deleteBuildingForm' ,function(e) {
    e.preventDefault();

    axios.delete($(this).attr('action'), []).then(response => {
        $(this).closest('tr').remove();

        $('.successMessages').hide();
    });
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...