Не нравятся результаты поиска? Попробуйте другой поиск!
DLE FAQ » Все вопросы » Хаки » Как добавить дополнительное поле radio в профиль пользователя?

Как добавить дополнительное поле radio в профиль пользователя?


     17.10.2018    Все вопросы » Хаки    1007

вопрос
Нужно добавить в профиль пользователя поле с выбором мужчина-женщина. Видел модуль на ajax он не подходит. Дополнительные поля через админку тоже не подходят. Нужно именно выбором через radio button

Ответа пока нет


8 комментариев

Flash
Эксперт

Hander
Юзер

Hander - 18 октября 2018 00:54 -

Это удобное решение до поры, когда пользователь повторно заходит в редактирование профиля, все поля сбрасываются к первым значениям

Flash
Эксперт

Flash - 18 октября 2018 09:15 -

Хм, получается при нажатии на кнопку - данные все равно не сохраняются?

Hander
Юзер

Hander - 18 октября 2018 16:23 -

Сохраняются, НО!
Распишу проще. Например у вас дополнительное поле:
Выбор из списка Мужчина или Женщина
Вы выбрали Женщина и сохранили. Тут все хорошо.
Заходим снова в редактирование, смотрим в поле стоит первое значение Мужчина
и если вы ничего не измените и просто сохраните, у вас будет выбран автоматом Мужчина

А если таких полей более одного, получается полный бардак. С каждой правкой профиля придется заново выставлять все значения

Flash
Эксперт

Flash - 18 октября 2018 21:24 -


Все, теперь понял. Тогда можно такой способ. Добавляем доп. поле типа "список", например, с названием "gender", в поле "Значение по умолчанию" вбиваем
male|Мужчина
female|Женщина

Поле "Название" - Пол
Ставим галочку в поле "Поле может быть изменено пользователем?"

Теперь в шаблоне "userinfo.tpl" внизу шаблона вставляем код

<script>
var $select = $('#xf_gender');
$select.find('option').each(function(j, option){
	var $option = $(option);
	var $radio = $('<input type="radio" />');
	$radio.attr('name', $select.attr('name')).attr('value', $option.val());
	if ($option.attr('selected')) $radio.attr('checked', 'checked');
	$select.before($radio);
	$select.before(
	  $("<label />").attr('for', $select.attr('name')).text($option.text())
	);
	$select.before("<br/>");
});
$select.remove();
</script>

Он будет заменять нужный "select" на "radio". Решайте сами - подходит ли такое для ваших целей.

raimonds.zundurs
Юзер

raimonds.zundurs - 7 января 2019 00:47 -

Не работает... ошибка ReferenceError: $ is not defined

Flash
Эксперт

Flash - 18 октября 2018 21:32 -

Кстати, а в версии 13 например, нет типа "radio"?))

raimonds.zundurs
Юзер

raimonds.zundurs - 7 января 2019 00:54 -

Нет даже 13.1 ...

Чтобы комментировать - войдите или зарегистрируйтесь на сайте

Похожие вопросы

наверх