Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 08.07.2018, 00:53
Интересующийся
Отправить личное сообщение для Эльдор Посмотреть профиль Найти все сообщения от Эльдор
 
Регистрация: 07.07.2018
Сообщений: 12

Не отправляется значение в кнопке "image"
Я с js пока-что на Вы. И по этому поводу прошу помощи у опытных товарищей помочь мне решить нижеописанную проблему.
Вывожу кнопки type="image" с помощью append(), в которых содержатся нужные разные значения (в Firefox через Inspector (F12) видно, что значения в кнопках стоят), но при нажатии информация из кнопки почему-то не уходит в обработчик... Если поменять кнопку (type="image") на переключатель ( type="radio"), то при выборе нужного информация отправляется на сервер. Так же если поменять type="image" на type="input", то информация отправляется только из последней кнопки не зависимо от того какую нажать. Подскажите, пожалуйста, в чем проблема?
Вот часть кода с кнопкой:
if (jQuery.inArray(skillId[i], ids7) == -1){
    ids7.push(skillId[i]);
    $("#allSkills2").append('<div id="allSkills3"><div id="skill_'+skillId[i]+'" title="'+skillName[i]+' ('+skillLvl[i]+' лвл). '+skillDescription[i]+'"><input type="image" name="radio1" src="img/1/skills/40x40/'+skillId[i]+'.png" value="'+skillId[i]+'"><span id="SkillRollback_'+skillId[i]+'"></span></div></div>');
}

С рабочим переключателем меняем только тип input с image на radio и при выборе нужного происходит отправление информации на сервер.
Ответить с цитированием
  #2 (permalink)  
Старый 08.07.2018, 02:23
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

type="image" работает также как и type="submit", то есть отправляет форму, разница только в том, что при type="image" на сервер будут переданы и координаты на кнопки где нажали.
type="radio" не отправляет форму, только программно по событию это можно сделать.
type="input" не существует, будет проигнорировано и трактоваться как type="text" и также не может отправлять форму, только программно по событию, что логически бессмысленно. При этом не важно какой был выбран при этом, сервер получит значение только последнего, если на нем такой язык как РНР, ибо имена у этих полей будут одинаковы.
Ответить с цитированием
  #3 (permalink)  
Старый 08.07.2018, 03:09
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Rise,
да так. Я как-то делал на базе этого простейшую каптчу - это гиф анимация на которой изменяется (по обновлению по времени) положение определенного прямоугольник среди других фигур. Нужно щелкнуть в область этого прямоугольника (указывается цвет). Сервер знает координаты текущего прямоугольника (запрошенного обновлением), с которыми и сверяет полученные координаты.
Ответить с цитированием
  #4 (permalink)  
Старый 08.07.2018, 13:10
Интересующийся
Отправить личное сообщение для Эльдор Посмотреть профиль Найти все сообщения от Эльдор
 
Регистрация: 07.07.2018
Сообщений: 12

Дело в том, что атрибут из описанной кнопки выше со значением name="radio1" не отправляется в обработчик - смотрел через alert().
В обработчике стоит сбор формы с помощью serialize() и отправка через ajax на сервер:
var dannie = $("#form2").serialize();
alert(dannie);
$.ajax({
	url:'ajax.php',
	type: 'POST',
	data: dannie,
	dataType: 'json',
	success: function(data){
		if (data == null){
			//Очищаем информацию, если ее нет.
			$("#info_1").html('');
		}
		else{
			//Вывод какой-либо информации.
			$("#info_1").html(data);
		}
	
		//Очистка формы.
		$('#form2').trigger('reset');
	}
});
Ответить с цитированием
  #5 (permalink)  
Старый 08.07.2018, 13:41
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Сообщение от Эльдор
Дело в том, что атрибут из описанной кнопки выше со значением name="radio1" не отправляется в обработчик
Что значит атрибут? Поля формы отправляются - имя поля как ключ, а значение как значение. В случае radio будет отправлено под именем этих полей значение выбранной кнопки. Никаких атрибутов поля и не отправляется.
Ответить с цитированием
  #6 (permalink)  
Старый 08.07.2018, 14:07
Интересующийся
Отправить личное сообщение для Эльдор Посмотреть профиль Найти все сообщения от Эльдор
 
Регистрация: 07.07.2018
Сообщений: 12

Атрибут "name", значение атрибута "radio1". Вот как раз имя кнопки ("radio1") и не уходит в обработчик (соответственно и значение кнопки (value="'+skillId[i]+'") тоже не отправляется).
Ответить с цитированием
  #7 (permalink)  
Старый 08.07.2018, 14:18
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Радиокнопки служат для выбора "одного из многих", то есть кнопок должно бить как минимум две и имеющими одно имя (зависимая группа кнопок). На сервер будет отправлено значение выбранной из кнопок. Если же ни одна из кнопок не выбрана и в группе нет выбранной по умолчанию кнопки, то на сервер и не будет передана ни одна из этих кнопок.

Может быть в этом кроется ваша проблема?
Ответить с цитированием
  #8 (permalink)  
Старый 08.07.2018, 14:31
Интересующийся
Отправить личное сообщение для Эльдор Посмотреть профиль Найти все сообщения от Эльдор
 
Регистрация: 07.07.2018
Сообщений: 12

Общий принцип радиокнопок я понимаю. Я вижу, что Вас смущает в стандартной кнопке значение атрибута "name" - "radio1". Но я это значение использую в стандартной кнопке (type="image"), а не в переключателе (радиокнопке) (type="radio"). Ведь оно (name = "radio1") может быть любым ("radio2" или "form12345") - в обработчике, на сервере это название ключа глобального массива - не более.
Ответить с цитированием
  #9 (permalink)  
Старый 08.07.2018, 14:35
Интересующийся
Отправить личное сообщение для Эльдор Посмотреть профиль Найти все сообщения от Эльдор
 
Регистрация: 07.07.2018
Сообщений: 12

Я говорю, что любая из кнопок (из первого поста) не отправляет ключ глобальной переменной (name = "radio1") и, соответственно, значение тоже не уходит. Остальные скрытые значения, которые есть - отправляются - не доходит лишь значение самой кнопки.
Ответить с цитированием
  #10 (permalink)  
Старый 08.07.2018, 14:38
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Меня не смущает имя, я не понимаю проблемы. Я ужу говорил, что type="image" отправляет форму и все поля формы имеющие имена и выбранные в случае радиокнопок и флажков будут переданы на сервер.
При этом если речь идет об асинхронной отправке формы, то нужно блокировать ее отправление.

У вас что-то не так, а что... из приведенного этого не понять.

PS. type="image" не может передать value, нет у него такого.

Последний раз редактировалось laimas, 08.07.2018 в 14:48.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Найти максимальное и минимальное значение в элементах DOM smart-create Events/DOM/Window 17 11.07.2017 13:36
Передать значение контейнера переменной golgo AJAX и COMET 4 02.06.2017 16:26
Проблемы с выпадающим списком JavaScript ursus102 Общие вопросы Javascript 0 16.01.2016 19:30
Выводить значение раньше переменных Гробовщик Общие вопросы Javascript 11 10.09.2013 08:42
Как при быстром многократном клике по кнопке обрабатывать только первый клик battrack jQuery 3 22.03.2012 10:47