Как передать параметр из div вподгружаемый в него контент?
Приветствую!
На странице HTML есть DIVы, в цикле, в которые подгружается свой контент. У каждого DIV свой параметр data-id. Это DIV: <div data-type="load"> {foreach name='config_list' item='item' key="key"} <div data-type="config" data-id="{$key+1}" style="display:none"> {$item.config|raw} </div> {/foreach} </div> Это контент: <form class="form-h5_1" onchange="changeForm($(this),1)" novalidate="novalidate"> <input type="hidden" name="model_id" value="1"> </form> <script> $(function(){ $('.form-h5_1').validate({ // }); }) </script> В итоге загрузки контента в блок DIV получается так: <div data-type="config" data-id="4" style="display: block;"> <form class="form-h5_1" onchange="changeForm($(this),1)" novalidate="novalidate"> <input type="hidden" name="model_id" value="1"> </form> <script> $(function(){ $('.form-h5_1').validate({ // }); }) </script> </div> Нужно передать значение параметра data-id из DIV в подгружаемый контент, чтобы я мог значение параметра data-id применить в подгружаемом контенте, а именно для персонализации каждой формы и её валидации. Примерно так: <div data-type="config" data-id="1" style="display: block;"> <form class="form-h5_1_1" onchange="changeForm($(this),1)" novalidate="novalidate"> <input type="hidden" name="model_id" value="1"> </form> <script> $(function(){ $('.form-h5_1_1').validate({ // }); }) </script> </div> <div data-type="config" data-id="2" style="display: block;"> <form class="form-h5_1_2" onchange="changeForm($(this),1)" novalidate="novalidate"> <input type="hidden" name="model_id" value="1"> </form> <script> $(function(){ $('.form-h5_1_2').validate({ // }); }) </script> </div> <div data-type="config" data-id="3" style="display: block;"> <form class="form-h5_1_3" onchange="changeForm($(this),1)" novalidate="novalidate"> <input type="hidden" name="model_id" value="1"> </form> <script> $(function(){ $('.form-h5_1_3').validate({ // }); }) </script> </div> <div data-type="config" data-id="4" style="display: block;"> <form class="form-h5_1_4" onchange="changeForm($(this),1)" novalidate="novalidate"> <input type="hidden" name="model_id" value="1"> </form> <script> $(function(){ $('.form-h5_1_4').validate({ // }); }) </script> </div> Заранее спасибо откликнувшимся! |
Vaska,
из поставленной задачи data-id ненужный атрибут. $(function(){ let form = $('.form-h5_1:first'); //let data_id = form.parent().data('id'); // console.log(data_id); form.removeClass('form-h5_1'); form.validate({ // }); }) |
Цитата:
Получается так <form class="" onchange="changeForm($(this),1)"> Валидация работает, но другие скрипты не работают из за удаления класса из формы. В контенте есть ещё код, который инициализирует другие скрипты и тоже использует класс: <div data-type="config" data-id="4" style="display: block;"> <form class="form-h5_1" onchange="changeForm($(this),1)" novalidate="novalidate"> <input type="hidden" name="model_id" value="1"> </form> <script> // Валидация class через механизм (в реальном времени) window.validation.init({ container: '.form-h5_1' }); // Ручная валидация class (при нажатии кнопки Сохранить) $('.save-button').on('click', function () { window.validation.isValid({ container: '.form-h5_1' }) $('.form-h5_1').valid() }); $(function(){ let form = $('.form-h5_1:first'); //let data_id = form.parent().data('id'); // console.log(data_id); form.removeClass('form-h5_1'); form.validate({ // }); }) </script> </div> Я ориентировался на то, что у меня будет переменная, которую я повстававляю к классам в коде, типа этого '.form-h5_1_'+data_id+''. А ваш вариант я не знаю как применить. Можете поправить, чтобы работало с учётом выше указанного кода? |
Vaska,
вариант был для предоставленного выше кода. раз вам удобнее с data_id, то делайте как вам удобно. пост #3 я не осилил. но как-то так <!DOCTYPE html> <html> <head> <title>Untitled</title> <meta charset="utf-8"> <style type="text/css"> </style> <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script> </head> <body> <div data-type="config" data-id="4" style="display: block;"> <form class="form-h5_1" onchange="changeForm($(this),1)" novalidate="novalidate"> <input type="hidden" name="model_id" value="1"> </form> <script> $(function(){ let form = $('.form-h5_1:first'); let data_id = form.parent().data('id'); let cls = `form-h5_1_${data_id}` form.removeClass('form-h5_1').addClass(cls); /* form.validate({ // });*/ }) </script> </div> <div data-type="config" data-id="7" style="display: block;"> <form class="form-h5_1" onchange="changeForm($(this),1)" novalidate="novalidate"> <input type="hidden" name="model_id" value="1"> </form> <script> $(function(){ let form = $('.form-h5_1:first'); let data_id = form.parent().data('id'); let cls = `form-h5_1_${data_id}` form.removeClass('form-h5_1').addClass(cls); /* form.validate({ // });*/ }) </script> </div> </body> </html> |
рони,
Да, это то, что надо! Всё работает. Большое спасибо! |
Часовой пояс GMT +3, время: 23:01. |