Сам сейчас столкнулся с данной проблемой, поэтому понимаю топикстартера, так как для сбора данных формы использую абсолютно такую же конструкцию как у топикстартера.
Если своими словами описывать проблему:
На сайте есть динамически подгруженное окно
$("#modal_form").load("/ajax/registration.php");
в файле регистрации куча различных полей для ввода информации, включая ползунок слайдер, для работоспособности которого подтянута библиотека UI. Плюс в зависимости от выбранного select (тип пользователя) всё окошко обновляется и для каждого типа пользователя отдается свой набор полей формы. Происходит это тоже посредством load
/* перезагрузка при выборе определенного select */
$('#sel_who').change( function(){
var myOption = $("#sel_who").val();
$("#modal_form").load(
"/ajax/registration.php",
{
whoareyou: myOption // передаем переменную, заданную в option
});
});
Эта перезагрузка идет уже из самого динамически подгруженного файла, то есть на данном этапе JS воспринимается как код.
Далее после заполнения формы пользователь жмет на кнопку отправки формы и должен перейти ко второму шагу (загрузка изображений, которые привяжутся к вновь созданному пользователю), но прежде нужно проверить корректность отправленных данных. Их я проверяю средствами php в том же registration.php и при возникновении ошибки пытаюсь той же конструкцией load отправить пользователя на страницу формы и расставить все правильные переменные по своим полям, чтобы пользователю не пришлось все заново набирать
$("#modal_form").load(
"/ajax/registration.php",
{
whoareyou: '.$whoareyou.',
step: 0,
name1: '.$name1.',
name2: '.$name2.',
name3: '.$name3.',
year: '.$year.',
month: '.$month.',
day: '.$day.',
country: '.$country.',
city: '.$city.',
art_direction: '.$art_direction.',
age_restrictions: '.$age_restrictions.',
mincost: '.$mincost.',
maxcost: '.$maxcost.',
education: '.$education.',
events: '.$events.',
public: '.$public.',
email: '.$email.',
pass_err_code: '.$pass_err_code.',
comeback: 1
});
как раз отрабатывает конструкция, указанная у топикстартера и из-за innerHTML весь JS код превращается в простой текст
из-за того, что этот кусочек кода динамически собирается в .php я не могу вынести его в отдельный файл, для отдельного файла, как я понял, существует getscript.
для полноты картины ниже приведу код подключаемых библиотек и скриптов, в динамически подгруженном файле
<!-- Скрипты добавляем, чтобы работал ползунок -->
<script type="text/javascript" src="js/jquery-1.6.1.min.js"></script>
<script type="text/javascript" src="/js/jquery.ui-slider.js"></script>
<script type="text/javascript" src="/js/jquery.main.js"></script>
<!-- КОНЕЦ Скрипты добавляем, чтобы работал ползунок -->
<script>
$(document).ready(function() { // вся мaгия пoсле зaгрузки стрaницы
$("#modal_form").load(
"/ajax/registration.php",
{
whoareyou: '.$whoareyou.',
step: 0,
name1: '.$name1.',
name2: '.$name2.',
name3: '.$name3.',
year: '.$year.',
month: '.$month.',
day: '.$day.',
country: '.$country.',
city: '.$city.',
art_direction: '.$art_direction.',
age_restrictions: '.$age_restrictions.',
mincost: '.$mincost.',
maxcost: '.$maxcost.',
education: '.$education.',
events: '.$events.',
public: '.$public.',
email: '.$email.',
pass_err_code: '.$pass_err_code.',
comeback: 1
});
/* перезагрузка при выборе определенного select */
$('#sel_who').change( function(){ // лoвим клик пo крестику или пoдлoжке
var myOption = $("#sel_who").val();
$("#modal_form").load(
"/ajax/registration.php",
{
whoareyou: myOption // передаем переменную, заданную в option
});
});
/* Зaкрытие мoдaльнoгo oкнa */
$('#modal_close, #overlay').click( function(){ // лoвим клик пo крестику или пoдлoжке
$('#modal_form')
.animate({opacity: 0, top: '45%'}, 200, // плaвнo меняем прoзрaчнoсть нa 0 и oднoвременнo двигaем oкнo вверх
function(){ // пoсле aнимaции
$(this).css('display', 'none'); // делaем ему display: none;
$('#overlay').fadeOut(400); // скрывaем пoдлoжку
}
);
});
});
</script>
Извините, если сумбурно описал проблему, первый раз на форуме вопрос задаю.
Хочется уже для себя определиться, как сделать текст кодом, потому что проблема вылезает уже не в первый раз, раньше обходил ее так, чтобы после отправки формы уже не требовались скрипты JS, а вот теперь никуда не деться.