Несколько $(document).ready(function(){ или как?
Добрый день!
Прошу помощи у форумчан так уже несколько дней не могу разобраться. :blink: Есть форма select , которая отправляет на обработчик значение value. Обработчик делает запрос в БД и возвращает назад на страницу результат в виде следующей формы selecta. Проще говоря, єто форма выбора Страна/Область/Город. Выбор Страна/Область я сделал через $(document).ready(function(){ var options = { target: "#city_form", beforeSubmit: showRequest, success: showResponse, timeout: 3000 }; $('#сountry_form').submit(function() { $(this).ajaxSubmit(options); return false; }); }); function showRequest(formData, jqForm, options) { var queryString = $.param(formData); var formElement = jqForm[03]; alert('Вот что мы передаем: \n\n' + queryString); return true; } function showResponse(responseText, statusText) { alert('Статус ответа сервера: ' + statusText + '\n\nТекст ответа сервера: \n' + responseText + '\n\nЦелевой элемент div обновиться этим текстом.'); } </script> Вот у меня обновляется див элемент #city_form второй формой. Теперь мне нужно при выборе с второй формы снова отправить данные на файл обработчик.. Но как это сделать, незнаю.. Пытался использовать тот же скрипт с указание уже другой формы, но так не срабатывает.. Прошу вашей помощи, и заранее благодарен!! |
а что такое ajaxSubmit? #city_form - элемент form? У тебя обновление второго списка происходит по кнопке submit?
|
Да
Спасибо что откликнулся.. :)
Да, обновление второго списка проходит по sabmity. #city_form - это div элемент который обновляется. Он обновляется нормально.. Но как послать снова запрос с обновленной формы - не знаю.. :agree: |
1. а что такое ajaxSubmit?
2. а не лучше ли второй список по onchange (select) обновлять? 3. как у тебя срабатывает '$(this).ajaxSubmit(options);'. Для этого в div'е #city_form должно возникнуть событие submit |
1. По пермому не знаю, взял пример скрипт с мануала api
2. Да лучше, но как сделать не хватает мозгов, подскажи плиз? 3. Тут я сделал опечатку, поправил в коде (выделил красным). target: "#city_form" - это див который обновляется $('#country_form').submit(function() { $(this).ajaxSubmit(options); - тут $('#country_form') Это форма в которой проходит submit. Вот это код формы echo "<form id='country_form' name='sel_count' method='post' action='form_area_next.php'> <select name='it_mid_count' input type='hidden'> "; // Так как запрос возвращает несколько строк, применяем цикл while($name = mysql_fetch_array($name_count)) { echo " <option value =".$name['itemid_country'].">".$name['name_country']."</option> "; } echo " </select> <input id='submit1' type='submit' name='submitButton' value='OK' /> </form> |
1. так поищи хотя бы где в коде у тебя такая функция определяется
2. перехватывай событие change select'а $('#selectId').change(function() {...}) |
Дык весь код я же привел.. :( Где она там еще может определятся :cray:
2. перехватывай событие change select'а $('#selectId').change(function() {...}) а что это даст? |
Цитата:
Цитата:
|
Ну ОК. Сделаю я допустим отправку по change вместо submit, результат тот же.. А как быть с другой формой? Тоесть первую по сабмиту а вторую по change ?
ПС а как тут карму добавлять то? а то что то добавил, а не показывает.. |
Цитата:
Цитата:
Цитата:
Цитата:
Цитата:
|
Так.. Сделал я отправку по onchange. Возвращает кусок html c второй формой селектов.
Если пытаюсь с второй формой провернуть теже действия как и с первой но при этом просто копирую и вставляю тот же скрипт но меняю $('#area_form').change(function() { $(this).ajaxSubmit(options); тоесть привязать действие к второй форме - то так не работает а просто перекидывает файл обработчик. Т.е. у тебя будет 2 обработчика onchange. - вот в том то и дело что так не выходит. Получается что при двух скриптах второй не фурычит..? |
событий change возникает у select'а, у тэга форм оно не возникает никогда (разве что если ты сам его инициируешь).
$('#area_form').change(function() { назначает обработчик события change для элемента с id area_form. Т.к. это форма (похоже), то обработчик никогда не сработает p.s. тут вообще формы не нужны p.p.s. покажи текст всей страницчки здесь - http://javascript.ru/paste |
Цитата:
http://javascript.ru/paste/49a808e3 |
зачем ты назначаешь обработчики формам а не select'ам? Зачем ты вообще используешь формы? Ты же сам согласился, что лучше обновлять списки не по кнопке submit?
Цитата:
p.s. чтобы проверить, срабатывает какой-либо обработчик или нет, можно в него alert('работает') или что-то типа того. А еще лучше пользоваться Firefox + Firebug - в скрипте можно будет писать console.log('работает') и эта фраза будет писаться в панель Console. Плюс еще много всякого удобного там есть |
ajaxSubmit у тебя, кстати, из файла jquery.form.js, который ты подключаешь, а скачал, наверное, где-нибудь здесь - http://malsup.com/jquery/form/
|
Использую формы - хм, а как без форм то? Даже не представляю..
Списки не сабмиту, да тут я согласен.. Так проще для пользователя.. А для скрипта, мне кажется разницы нету по какому действию использовать HttpRequest. Скрипт работает, честно... :) alert('работает') или что-то типа того - так есть же alert('Вот что мы передаем: \n\n' + queryString); и alert('Статус ответа сервера: ' + statusText + '\n\nТекст ответа сервера: \n' + responseText + '\n\nЦелевой элемент div обновиться этим текстом.'); А еще лучше пользоваться Firefox + Firebug - есть такой, но пользоваться пока не научился толком.. ПС Так мне делать то с вторым списком? |
а ты можешь дать еще ссылку на работающий вариант (не на код)?
есть такой, но пользоваться пока не научился толком а ты попробуй - вместо того, чтобы писать alert('asd'); пишешь console.log('asd'); и 'asd' появляется на вкладке Console (только эту вкладку включить надо) |
На работающий вариант ссылку дать не могу, так как система внутризеренного пользования и доступ естественно запаролен..
а ты попробуй - вместо того, чтобы писать alert('asd'); спасибо за совет, попробую обязательно. Но в решении моего вопроса это врятли поможет.. :no: |
Цитата:
а вообще делается так <select id="list"> <option>1 <option>2 </select> <select id="secondList"> <option> </select> $(function() { $('#list').change(function() { $('#secondList').load('1.php'); }); }); 1.php выдает содержимое для второго списка |
Если я верно понял, то это скрипт просто подтянет 1.php при событии change
в форме #list? Ну а как мне передать таким скриптом value что бы сделать соответствующий запрос к БД? 1.php - у меня не статистический то |
Цитата:
Цитата:
http://www.w3.org/TR/1998/REC-DOM-Le...ml#ID-94282980 |
To: Electric200
Вот статья Каскад раскрывающихся списков, где подробно рассказано как это делается. Есть пример. Работающий. И исходный код. А переточить под свои нужды проще простого... |
Gennady огромное спасибо!!! я был у вас на сайте, и вы мне помогали.. Но этой статьи наверно не было...
Спасибо большое!! |
Часовой пояс GMT +3, время: 09:40. |