Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Добавленная JS форма не хочет работать (https://javascript.ru/forum/misc/72544-dobavlennaya-js-forma-ne-khochet-rabotat.html)

kupidon 08.02.2018 20:31

Блин, спасибо огромное за скрипт. Завтра буду весь день переваривать ваш код.
Теперь по месту его применения.
Вот что я делаю: есть страница на которой два блока. Один блок со списком товаров, второй блок - скрытый, в нем будут отображаться характеристики выбранного из списка товара.
Нажимаю на строку списка, этот блок скрывается, отправляется ajax запрос к бд, получаю данные о товаре и вывожу их во втором блоке. Во втором блоке также формируется и отображается форма выбора файлов для загрузки фото товара. Обращаю внимание: весь код второго блока формируется в js.

Вот только при таком раскладе форма не работает как надо. Я подозреваю что скрипт обработки этой формы находится не на своем месте.

edit_items.js- файл со скриптами. Вот его структура:
jQuery(document).ready(function ($){
....
тут ajax скрипт отправки формы в обработчик 
...
}); 
.....
// Далее пошли разные функции
...
// функция отображения характеристик товара
// формирую второй блок полностью
function open_item(iditem) {
Вот тут снова формирую новый код html, в нем эта форма
}
....


то есть форма формируется за пределами jQuery(document).ready(function ($)
Может из-за этого она не работать?

laimas 08.02.2018 21:10

Цитата:

Сообщение от kupidon
то есть форма формируется за пределами jQuery(document).ready(function ($)

Какая разница в теле jQuery(document).ready или нет, формирование то ее есть результат Ajax запроса "отправляется ajax запрос к бд, получаю данные о товаре и вывожу их во втором блоке".

По тому что показано трудно сказать почему не работает, даже что именно не работает и это не известно.

Nexus 08.02.2018 22:49

Как я понял при инициализации страницы на некую форму навешивается обработчик.
После неких манипуляций html формы изменяется (пост 1) и после этого все перестает работать.

Вы делегировать обработку события не пробовали?
При изменении html кода обработчики события с замененных элементов удаляются.

Nexus 08.02.2018 22:54

<div id="form">
<button type="submit" id="button">CLick me</button>
</div>
<div id="form2">
<button type="submit" id="button2">CLick me</button>
</div>
<script>
var _get=function(id){
    return document.getElementById(id);
};
_get('button').onclick=function(){
    alert('First button');
    _get('form').innerHTML=_get('form').innerHTML;
    _get('button').innerHTML='Click more';
};
_get('form2').onclick=function(e){
    if(e.target.tagName.toLowerCase()!='button')
        return;

    alert('Second button');
    _get('form2').innerHTML=_get('form2').innerHTML;
    _get('button2').innerHTML='Click more';
};
</script>


Часовой пояс GMT +3, время: 15:32.