
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 и при выборе нужного происходит отправление информации на сервер.
|
|

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

08.07.2018, 03:09
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
Rise,
да так. Я как-то делал на базе этого простейшую каптчу - это гиф анимация на которой изменяется (по обновлению по времени) положение определенного прямоугольник среди других фигур. Нужно щелкнуть в область этого прямоугольника (указывается цвет). Сервер знает координаты текущего прямоугольника (запрошенного обновлением), с которыми и сверяет полученные координаты.
|
|

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');
}
});
|
|

08.07.2018, 13:41
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
Сообщение от Эльдор
|
Дело в том, что атрибут из описанной кнопки выше со значением name="radio1" не отправляется в обработчик
|
Что значит атрибут? Поля формы отправляются - имя поля как ключ, а значение как значение. В случае radio будет отправлено под именем этих полей значение выбранной кнопки. Никаких атрибутов поля и не отправляется.
|
|

08.07.2018, 14:07
|
Интересующийся
|
|
Регистрация: 07.07.2018
Сообщений: 12
|
|
Атрибут "name", значение атрибута "radio1". Вот как раз имя кнопки ("radio1") и не уходит в обработчик (соответственно и значение кнопки (value="'+skillId[i]+'") тоже не отправляется).
|
|

08.07.2018, 14:18
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
Радиокнопки служат для выбора "одного из многих", то есть кнопок должно бить как минимум две и имеющими одно имя (зависимая группа кнопок). На сервер будет отправлено значение выбранной из кнопок. Если же ни одна из кнопок не выбрана и в группе нет выбранной по умолчанию кнопки, то на сервер и не будет передана ни одна из этих кнопок.
Может быть в этом кроется ваша проблема?
|
|

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

08.07.2018, 14:35
|
Интересующийся
|
|
Регистрация: 07.07.2018
Сообщений: 12
|
|
Я говорю, что любая из кнопок (из первого поста) не отправляет ключ глобальной переменной (name = "radio1") и, соответственно, значение тоже не уходит. Остальные скрытые значения, которые есть - отправляются - не доходит лишь значение самой кнопки.
|
|

08.07.2018, 14:38
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
Меня не смущает имя, я не понимаю проблемы. Я ужу говорил, что type="image" отправляет форму и все поля формы имеющие имена и выбранные в случае радиокнопок и флажков будут переданы на сервер.
При этом если речь идет об асинхронной отправке формы, то нужно блокировать ее отправление.
У вас что-то не так, а что... из приведенного этого не понять.
PS. type="image" не может передать value, нет у него такого.
Последний раз редактировалось laimas, 08.07.2018 в 14:48.
|
|
|
|