leon9208
@leon9208
Начинающий web-developer

Можно ли строку перевести в объект?

Добрый вечер. В этом деле я дилетант, поэтому возможно вопрос сформулирован не верно.

Есть форма, в форме на выбор 4 варианта ввода (email; viber; whatsapp; telegram) информации, я не стал плодить input(ы) для каждого типа ввода, а использовал один, чтобы при выборе менялись атрибуты, а значения атрибутов берутся из созданного мною (вложенного) объекта.

Вот сами объекты:

var text = {
	email:{
		name: "Eail:",
		label: "Контактный e-mail:",
		placeholder: "ivan@mail.ru",
		type: "email"
	},
	viber:{
		name: "Vber:",
		label: "Введите номер Viber:",
		placeholder: "Введите телефон",
		type: "tel"
	},
	whatsapp:{
		name: "Watsapp:",
		label: "Введите номер WhatsApp:",
		placeholder: "Введите телефон",
		type: "tel"
	},
	telegram:{
		name: "Telegram:",
		label: "Введите номер или логин Telegram:",
		placeholder: "Введите логин",
		type: "text"
	}
};


На пункты выбора типа ввода я повесил дата-атрибуты со значениями. Эти значения атрибутов схожи с объектами.

Сложность заключается в том, что когда я кликаю на тип ввода, то получаю данные атрибута как строку, как конвертировать строку в (НЕ-СТРОКУ), чтобы я мог использовать это значение при замене информации, брать данные из объекта.

Пример на CODEPEN

Просьба сильно не ругаться, я только учусь. Возможно я делаю то что невозможное, если так, дайте знать.

Заранее спасибо.

p.s. Сейчас сделал через КОСТЫЛЬ, хотя идея была изначально сделать используя минимум кода.
  • Вопрос задан
  • 99 просмотров
Решения вопроса 1
0xD34F
@0xD34F Куратор тега JavaScript
$('.tab__list').on('click', '.tab__item', function() {
  const
    $this = $(this),
    { label, ...attrs } = text[$this.data('tab')];

  $this.siblings().removeClass('tab__item--active');
  $this.addClass('tab__item--active');
  $('#formField').attr(attrs);
  $('#formLabel').text(label);
});
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
coderisimo
@coderisimo Куратор тега JavaScript
JSON.parse(text[, reviver]); ?
Ответ написан
Комментировать
leon9208
@leon9208 Автор вопроса
Начинающий web-developer
Идея изначально была такая:

$(el).click(fucntion()){
  var $data = $(this).attr("data"); // получаю строку
 $(input).attr({
  "name" :  text.$data.name,
  "label" :  text.$data.label
})
}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы