Добрый день, я только изучаю JS, на стороне сервера у меня php фреймворк. Я делаю кросдоменные запросы посредством Jsonp, через get параметры я отправляю атрибуты на билдинг форму. Сервер осуществляет буфферизацию вида и возвращает мне HTML код. В нем имеются Jquery - UI Slider(ползунки цен).
На сайте откуда вызывается запрос, UI установлен, но новые элементы он не видит. Контент я вставляю посредством
$('body').append('<div id="container-form">');
$('#container-form').append(response.form_html);
На сабмите висит обработчик по клику, он собирает все данные и отправляет их. Сбор данных делаю через
$(document).find('[name="someField"]').val();
Потому что, опять же не попадает контент в DOM. Я не очень понимаю как вешать Хендлеры и как решить подобный косяк. Можете подсказать в какую сторону смотреть? Или пример "подхвата" скриптом.
UPD дополнил полным кодом.
(function(){
var = params = // тут сами параметры, сам парсинг рабора параметров запроса я убрал, что бы не мусорить вам.
var res = $.ajax({
url: "https://site.com/form-request",
method: "GET",
data: params,
dataType: "jsonp",
jsonp: "callback",
success:function(response){
$('body').append('<div id="container-form">');
$('#container-form').append(response.form_html);
}
});
$(document).on('submit', '#landing_form', function(event){
var data = {};
if (params['login']) data['login'] = $(document).find('[name="login"]').val();
var request = $.ajax({
url: "https://site.com/form-request",
method: "GET",
data: data,
dataType: "jsonp",
success:function(response){
if(response.redirect_url){
//Если форма прошла валидацию, контроллер возвращает ссылку на редирект.
window.location = response.redirect_url;
}else{
//Если форма не прошла валидацию, она возвращает HTML с ошибками и формой.
$('#container-form').empty();
$('#container-form').append(response.form_html);
}
}
});
event.preventDefault();
});
})();