![]() |
|
Модераторы: Sardar, Aliance |
![]()
|
|
| Cheizer |
|
||||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 89 Регистрация: 28.1.2011 Репутация: нет Всего: нет |
Дорогие друзья, всю голову изломал, не могу понять как правильно сделать.
Есть форма на сайте, аяксом отправляется, вот часть html инпутов, как пример NAME все работает отлично на всех моментах до почты пользователя. НО понадобилось добавить RADIO кнопки, и все труба, а проблема в том, что не знаю как отправлять на почту только выбранный РАДИО, они все имеют значения, и аякс отправляет их успешно, php принимает и в письмо, и никаких выбранных, или все, или ничего
вот часть обработчика яваскрипт, кjторый уже передает PHP, и вот тут я думаю самая заморочка с этим getValFromLabel, если без него, то все две переменные отправляет. Вот как тут правильно написать что бы VALUE одно и ВЫБРАННОЕ улетало к php?????
Вот тут принимается и на почту, но главное распечатывает все и выбранные и не выбранные .
Как сделать так, что бы kol:$('input.kol',_.form).val()||'nope', в яваскрипт обработчике, принимал только выбранной кнокпи значение???? И отправлял в одной переменно в php обработчик? Это сообщение отредактировал(а) Cheizer - 29.4.2014, 16:53 |
||||||
|
|||||||
| Aliance |
|
|||
![]() I ♥ <script> ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6418 Регистрация: 2.8.2004 Где: spb Репутация: 17 Всего: 137 |
А как можно ответить на этот вопрос, не видя листинга функции getValFromLabel?
|
|||
|
||||
| Cheizer |
|
||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 89 Регистрация: 28.1.2011 Репутация: нет Всего: нет |
Извиняюсь, просто он очень большой
|
||||
|
|||||
| ksnk |
|
|||
![]() прохожий ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 48 Всего: 386 |
-------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! |
|||
|
||||
| Cheizer |
|
||||||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 89 Регистрация: 28.1.2011 Репутация: нет Всего: нет |
Спасибо, подменил это:
на ваш код с добавлением проверки на чекед радио
И перестали отправляться формы, ошибка похоже где то :( и как это использовать в ,submitFu:function()??? |
||||||||
|
|||||||||
| ksnk |
|
|||
![]() прохожий ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 48 Всего: 386 |
Вероятно, отлаживать? В хроме есть прекрасная панель отладки для Javascript. -------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! |
|||
|
||||
| Cheizer |
|
||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 89 Регистрация: 28.1.2011 Репутация: нет Всего: нет |
проанализировал на баг, пишет Uncaught TypeError: Cannot read property 'type' of undefined Добавлено через 37 секунд Да да, сразу не написал, решил поковырять, пишет Uncaught TypeError: Cannot read property 'type' of undefined |
||||
|
|||||
| ksnk |
|
|||
![]() прохожий ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 48 Всего: 386 |
Ну, тогда так.
Нужно посмотреть, в каких местах используется эта функция. В каком-то лабеле нет input или textarea. -------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! |
|||
|
||||
| Cheizer |
|
||||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 89 Регистрация: 28.1.2011 Репутация: нет Всего: нет |
Да нет, везде есть
|
||||||
|
|||||||
| Aliance |
|
|||
![]() I ♥ <script> ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6418 Регистрация: 2.8.2004 Где: spb Репутация: 17 Всего: 137 |
Можно сделать в getValFromLabel блок try/catch где в случае ошибки дампать содержание переменной input
|
|||
|
||||
| Cheizer |
|
||||||||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 89 Регистрация: 28.1.2011 Репутация: нет Всего: нет |
Да, вот так форма отправляется, ошибок нет, но как использовать для kol:$('input.kol',_.form).val()||'nope', в функции:
а то все равно приходит первое поле из двух, не зависимо от выбора:
Это сообщение отредактировал(а) Cheizer - 30.4.2014, 12:53 |
||||||||||
|
|||||||||||
| Cheizer |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 89 Регистрация: 28.1.2011 Репутация: нет Всего: нет |
Но как сделать проверку на выбранный RADIO??? Приходит просто значение первого RADIO не зависимо от выбора, даже если второй выбираешь. |
|||
|
||||
| Aliance |
|
|||
![]() I ♥ <script> ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6418 Регистрация: 2.8.2004 Где: spb Репутация: 17 Всего: 137 |
Может стоит попробовать jQuery pseudo selectors (в частности :checked)?
Вообще, по-моему, логически не верно помещать 2 элемента формы (будь то radio или же любой другой) внутрь одного элемента label. Там должна быть связь один-к-одному. Это сообщение отредактировал(а) Aliance - 30.4.2014, 13:20 |
|||
|
||||
| Cheizer |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 89 Регистрация: 28.1.2011 Репутация: нет Всего: нет |
Да действительно, в разные лейблы хорошая идея, но этот JS код он не понимает тип RADIO :( не отправляется форма из за этого |
|||
|
||||
| ksnk |
|
|||
![]() прохожий ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 48 Всего: 386 |
А вот в чем дело! Тогда так
Добавлено @ 14:15 Иногда проще на jsfiddle.net сделать тестовый пример. Его и отлаживать можно коллегиально, а не методом "удаленного тыка" Это сообщение отредактировал(а) ksnk - 30.4.2014, 14:19 -------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! |
|||
|
||||
| Cheizer |
|
||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 89 Регистрация: 28.1.2011 Репутация: нет Всего: нет |
убрал ошибку в строке if((input.length>0 && input[0].type=='radio'){ но форма теперь не отправляется, уже все перепробовал, суть в том что этот скрипт, принимает все инпуты которые есть в форме, и передает php все значения, и не понятно как ЧЕКЕД у радио кнопок передавать в него :( ему наплевать на чекед, есть инпут в html, у него есть переменная, все, он ее наполяет после отправки фолрмы и отдает php. а php щлет все значения всех радио на странице на почту, бред конечно :( Это сообщение отредактировал(а) Cheizer - 30.4.2014, 14:58 |
||||
|
|||||
| Aliance |
|
|||
![]() I ♥ <script> ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6418 Регистрация: 2.8.2004 Где: spb Репутация: 17 Всего: 137 |
Скобочку дублирующую удалить нужно. Что ж на каждых пых-то постить, это же и самому можно найти и исправить
|
|||
|
||||
| Cheizer |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 89 Регистрация: 28.1.2011 Репутация: нет Всего: нет |
опередили сообщением, убрал |
|||
|
||||
| Aliance |
|
|||
![]() I ♥ <script> ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6418 Регистрация: 2.8.2004 Где: spb Репутация: 17 Всего: 137 |
Давайте посмотрим внутрь функции getValFromLabel:
первой строчкой по получаем ссылку на коллекцию input внутри конкретного label. В случае с radio, это коллекция будет содержать в себе 2 элемента input=radio (что по логике не правильно) ksnk, написал хак, при котором в случае, если в коллекции есть хотя бы один элемент и тип первого из этих элементов = radio, то итоговый элемент заменяется на выбранный (:checked) среди изначальной коллекции. далее, идет второй хак, который в случае с input=radio отправляет nope, если элемент не отмечен. по логике все верно и должно работать, хотя я не костылил бы, а изменил верстку по правилу 1 label - 1 input, и тогда первого хака не потребуется. если не работает - нужно дебажить, продампать например переменные в разных участках кода. за вас это без примера на jsfiddle делать никто не будет, так что либо самому, либо все же набросать скелетон на jsfiddle =) Добавлено через 13 минут и 3 секунды Вот, я создал скелетон: http://jsfiddle.net/Aliance/TYBN6/ В дальнейшем, просьба все изменения делать в рамках этой ссылки, чтобы все могли понимать о чем вы говорите. Я изменил input = $(':checked',input); на input = $('input:checked', label); и все заработало. |
|||
|
||||
| Cheizer |
|
||||||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 89 Регистрация: 28.1.2011 Репутация: нет Всего: нет |
Да, ваш пример работает на jsfiddle.net: но на сайте моем немного изменил начало, так как ругался ошибка, сделал так:
в функции отправки написал так:
результат, форма не отправляется просто, ошибок нет, мне кажется еще есть подстава с валидацией, так как по умолчанию все инпуты в лейблах попадают в валидацию, по этому не отправляется, но это догадка только :( Это сообщение отредактировал(а) Cheizer - 30.4.2014, 15:56 |
||||||||
|
|||||||||
| Aliance |
|
|||
![]() I ♥ <script> ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6418 Регистрация: 2.8.2004 Где: spb Репутация: 17 Всего: 137 |
Никто же не знает, что у вас на сайте. Если работает на фиддле, а не работает на сайте - какой вывод делаем?
В консоле что выдает эта надпись: $('input.kol',_.form).val() ? А что должна? Ajax запрос отправляется? Если нет - видимо, проблема в валидации и это не в рамках этого топика уже. Если отправляется - то в чем проблема, данные не те посылаются или что? |
|||
|
||||
| Cheizer |
|
||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 89 Регистрация: 28.1.2011 Репутация: нет Всего: нет |
В том то и дело что ничего не выдает :( вот полный код из файла, в html все просто. Обычная форма.
|
||||
|
|||||
| Aliance |
|
|||
![]() I ♥ <script> ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6418 Регистрация: 2.8.2004 Где: spb Репутация: 17 Всего: 137 |
Ну так не выдает-то наверное потому, что селектор составлен не правильно? У вас написано input.kol, а нужно label.kol input:radio:checked
|
|||
|
||||
| Cheizer |
|
||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 89 Регистрация: 28.1.2011 Репутация: нет Всего: нет |
написал так:
ничего не изменилось, тишина, ни ошибки ни отправки, только в консоли такое предупреждение висит: event.returnValue is deprecated. Please use the standard event.preventDefault() instead. |
||||
|
|||||
| Aliance |
|
|||
![]() I ♥ <script> ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6418 Регистрация: 2.8.2004 Где: spb Репутация: 17 Всего: 137 |
Ставьте дампы (например, console.log) по коду, смотрите куда он не заходит (а должен бы), выясняйте причину, исправляйте.
Делайте дампы переменных, чтобы знать, что в них находится. |
|||
|
||||
| Cheizer |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 89 Регистрация: 28.1.2011 Репутация: нет Всего: нет |
Всем спасибо, видно реально этот код не заточен изначально для таких элементов, а переписывать пол кода не зная JS методом тыка, не дело это. |
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | JavaScript: для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |