Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Изменение значения после клика по ссылке (https://javascript.ru/forum/dom-window/39313-izmenenie-znacheniya-posle-klika-po-ssylke.html)

MasterDmx 25.06.2013 11:51

Изменение значения после клика по ссылке
 
Доброго времени суток уважаемые мастера,

есть список ссылок:

<a href="#" id="tr1" title="Голубые валенки">Заказать</a>
<a href="#" id="tr2" title="Черные перчатки">Заказать</a>
<a href="#" id="tr3" title="Светлые перчатки">Заказать</a>


При нажатии на ссылку всплывает jQuery окно, в котором находится форма. Таких ссылок огромное кол-во. И поэтому каждое окно прописывать не вариант, всего одно окно, в котором будет меняться значение одного поля, смотря на какую ссылку "тыкнуть".

Во всплывающем окне находится форма.
Предположим, что она состоит из 3 input'ов типа text. 2 из них заполняются юзерами, а одна из них скрыта. Именно она и будет менятся.

Нужен скрипт, который при нажатии на ссылку, брал бы title у этой ссылки и "запихивал" его в значение input'a, то бишь в value.

Думаю задача не сильно сложная, но к сожалению мои познания в java близки к нулю, и поэтому я прошу вашей помощи.

Заранее благодарен.

skrudjmakdak 25.06.2013 12:01

с использованием jquery
$('a').click(function()
{
$(obj).html($(this).attr('title'));
});

MasterDmx 25.06.2013 19:47

Цитата:

Сообщение от skrudjmakdak (Сообщение 258337)
с использованием jquery
$('a').click(function()
{
$(obj).html($(this).attr('title'));
});

Спасибо за быстрый ответ, но не совсем понял как это работает.

Дайте объясню подробнее.

Итак, есть список ссылок:

<a class="js__p_start" href="#__zakaz" id="ps1"  title="Ноутбуки">Заказать</a>
<a class="js__p_start" href="#__zakaz" id="ps2"  title="Нетбуки">Заказать</a>
<a class="js__p_start" href="#__zakaz" id="ps3"  title="Планшеты">Заказать</a>


При нажатии на ссылку всплывает вот такое окно:

<div class="p_body js__p_body js__fadeout"></div> 
<div class="popup js__popup js__slide_top"><a href="#" class="p_close js__p_close" title="Закрыть"></a>
 <div class="p_content">


	<div id='m_form'>
		<div><strong>Отправить сообщение</strong></div>
		<div>Ваше имя <input type='text' id='m_name' /></div>
		<div>Ваш email <input type='text' id='m_email' /></div>
		<div>Тема сообщения <input type='hidden' value="Тест темы" id='m_theme' /></div>
		<div>Сообщение <textarea id="m_message"></textarea></div>
		<div><button>Отправить заявку</button>&nbsp;&nbsp;&nbsp; <span id='result'></span></div>
	</div>

 </div>
</div>


Окно всплывает как надо, все работает.

В этом окне есть форма:
<div id='m_form'>
		<div><strong>Отправить сообщение</strong></div>
		<div>Ваше имя <input type='text' id='m_name' /></div>
		<div>Ваш email <input type='text' id='m_email' /></div>
		<div><input type='hidden' value="Товар" id='m_theme' /></div>
		<div>Сообщение <textarea id="m_message"></textarea></div>
		<div><button>Отправить заявку</button>&nbsp;&nbsp;&nbsp; <span id='result'></span></div>
	</div>


В которой есть input скрытого типа:
<input type='hidden' value="Товар" id='m_theme' />


Так вот, нужно каким-то образом сделать сделать так, что бы в зависимости от того, на какую ссылку "тыкнет" пользователь, менялось value у данного input'a.

Т. е. к примеру пользователь нажал на ссылку
<a class="js__p_start" href="#__zakaz" id="ps2"  title="Нетбуки">Заказать</a>


и "Товар" (Т. е. значение value) у скрытой формы стало "Нетбуки". И так далее.

Возможно и реализовать как-то по-другому. Через ID ссылок

То есть создать таблицу, например где
ps1 = Ноутбуки
ps2 = Нетбуки
ps3 = Планшеты

И при нажатии на ссылку с таким id, value меняется на значение из этой таблицы.

Но мне кажется с тайтлом будет быстрее и меньше мароки.

Надеюсь понятно объяснил.
Заранее благодарен за ваши ответы.

skrudjmakdak 25.06.2013 20:29

если вы не знакомы с jquery, то вот его официальный сайт jquery.com
необходимо скачать библиотеку (10 версия последняя), она прям на самой первой, стартовой странице.
и подключить: <script type="text/javascript" src="путь_к_библиотеке"></script>

как вы говорили, через id лучше. т.к. это универсальный опознаветель...
тогда ссылка будет выглядеть ДОПУСТИМ так:
<a class="js__p_start" href="#__zakaz" id="z_link-1"  title="Нетбуки">Заказать</a>

$('.js__p_start').click(function()
  {
  var id = parseInt($(this).attr('id').split('-')[1]); //находим id
  var title = $(this).attr('title');
  $('#m_theme').val(id); 
  // или
  //$('#m_theme').val(title); 
  $('#m_form').css('display', 'block'); //показываем всплывающее окно
  return false; //запрещаем переход по ссылке
  });

MasterDmx 25.06.2013 23:43

Спасибо, но к сожалению так и не смог разобраться с вашим примером, однако, удалось существенно приблизится к желанной цели.

Получился вот такой скриптик

function newVal(){
  	var res = $("#zlink1").attr('title');
	$('#m_theme').val(res); 
  	return false;
}


Который при нажатии на ссылку:
<a  href="#__zakaz" id="zlink1" onclick="newVal()" title="Заказать 1"></a>


Меняет значение атрибута value у формы с id="m_theme".

Все работает отлично.

Тока вот возникла такая проблема, ссылка не одна, их много.
<a  href="#__zakaz" id="zlink1" onclick="newVal()" title="Заказать 1"></a>
<a  href="#__zakaz" id="zlink2" onclick="newVal()" title="Заказать 2"></a> 
<a  href="#__zakaz" id="zlink3" onclick="newVal()" title="Заказать 3"></a> 
<a  href="#__zakaz" id="zlink4" onclick="newVal()" title="Заказать 4"></a> 
<a  href="#__zakaz" id="zlink5" onclick="newVal()" title="Заказать 5"></a>


Нужно что бы скрипт забирал title именно у того id ссылки, по которой кликнули.

То есть как я понимаю заменить строчку:

var res = $("#zlink1").attr('title');


П.С. - пробовал по вашему варианту, ничего не вышло.

рони 25.06.2013 23:48

MasterDmx,
var res = $(this).attr('title');

MasterDmx 26.06.2013 00:01

Не работает. Может быть я что не так вставляю?
Вот итоговый скрипт:

function newVal(){
	var res = $(this).attr('title');	
	$('#m_theme').val(res); 
  	return false;
}

vadim5june 26.06.2013 01:02

<a  href="#__zakaz" id="zlink1" onclick="newVal(this)" title="Заказать 1"></a>

function newVal(t){
	var res = $(t).attr('title');	
	$('#m_theme').val(res); 
  	return false;
}

danik.js 26.06.2013 11:14

<a href="#__zakaz" id="zlink2" onclick="newVal()" title="Заказать 2"></a>
<a href="#__zakaz" id="zlink3" onclick="newVal()" title="Заказать 3"></a>
<a href="#__zakaz" id="zlink4" onclick="newVal()" title="Заказать 4"></a>
<a href="#__zakaz" id="zlink5" onclick="newVal()" title="Заказать 5"></a>
<script>
    $('a[href="#__zakaz"]').click(function(e){
        $('#m_theme').val(this.title);
        e.preventDefault();
    });
</script>


Часовой пояс GMT +3, время: 04:41.