Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 25.03.2013, 15:41
Новичок на форуме
Отправить личное сообщение для bannndi Посмотреть профиль Найти все сообщения от bannndi
 
Регистрация: 25.03.2013
Сообщений: 7

как выполнить клик по submit если кликать по ссылке?
Здравствуйте!

есть обработчик события клик по сабмиту, который добавляет в корзину товар. Вопрос в том, можно ли при клике по
<a href="/cart/">Перейти к заказу</a>

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

Пробовал по разному (дублировал кнопку, селекторы менял), пока не получилось.

Максимум, чего удалось добиться пока - это создать 2 идентичные кнопки сабмит с разными id, которые раздельно выполняют добавление товара в корзину. Если идти по этому пути, то вопрос следующий: как поставить условие,
if(клик по кнопке с id2) редирект на заданный урл?

схематический html:
<form>
      <select>
          <option value="1">a1</option>
      </select>

      <input type="submit" />

<a href="/cart/">Перейти к заказу</a>
      </form>


полный js:
// Аяксовая корзина
$('form.variants').live('submit', function(e) {
	e.preventDefault();
	// button = $(this).find('input[type="submit"]');
	// button = $(this).find('#buttonToCart1, #buttonToCart2');
	// button = $(this).find('#buttonToCart1');
	button = $(this).find('input[type="submit"]');
	$.ajax({
		url: "ajax/cart.php",
		data: {variant: $(this).find('option:checked').val()},
		dataType: 'json',
		success: function(data){
			$('#cart_informer').html(data);
			if(button.attr('data-result-text'))
				button.val(button.attr('data-result-text'));
		}
	});
	var o1 = $(this).offset();
	var o2 = $('#cart_informer').offset();
	var dx = o1.left - o2.left;
	var dy = o1.top - o2.top;
	var distance = Math.sqrt(dx * dx + dy * dy);
	$(this).closest('.product').find('.image img').effect("transfer", { to: $("#cart_informer"), className: "transfer_class" }, distance);	
	$('.transfer_class').html($(this).closest('.product').find('.image').html());
	$('.transfer_class').find('img').css('height', '100%');
	return false;
});
Ответить с цитированием
  #2 (permalink)  
Старый 25.03.2013, 16:00
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Сделай скрипт, который примет параметром id товара или что там у тебя, добавит инфу в сессию (или куда там у тебя) и перенаправит юзера на /cart/

Типа так
<a href="/add?id=xxx">Перейти к заказу</a>
Ответить с цитированием
  #3 (permalink)  
Старый 25.03.2013, 16:14
Новичок на форуме
Отправить личное сообщение для bannndi Посмотреть профиль Найти все сообщения от bannndi
 
Регистрация: 25.03.2013
Сообщений: 7

Сообщение от danik.js Посмотреть сообщение
Типа так
<a href="/add?id=xxx">Перейти к заказу</a>
спасибо, а вообще возможно сделать так, чтобы при клике по ссылке выполнился клик по сабмиту? чтобы лишнего не писать ничего. если да, то какой метод использовать?
Ответить с цитированием
  #4 (permalink)  
Старый 25.03.2013, 16:26
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Сообщение от bannndi
спасибо, а вообще возможно сделать так, чтобы при клике по ссылке выполнился клик по сабмиту? чтобы лишнего не писать ничего. если да, то какой метод использовать?
Нельзя. При клике по ссылке произойдет выгрузка текущей страницы и загрузка новой. Все скрипты и ajax-запросы тут же будут остановлены. Как вариант - останавливать переход (хотя тогда какой смысл в "ссылке"?), делать ajax-запрос и дожидаться ответа, и уже в ответе делать location = '/cart/'
Ответить с цитированием
  #5 (permalink)  
Старый 25.03.2013, 16:56
Новичок на форуме
Отправить личное сообщение для bannndi Посмотреть профиль Найти все сообщения от bannndi
 
Регистрация: 25.03.2013
Сообщений: 7

Сообщение от danik.js Посмотреть сообщение
Как вариант - останавливать переход (хотя тогда какой смысл в "ссылке"?), делать ajax-запрос и дожидаться ответа, и уже в ответе делать location = '/cart/'
смысла в ссылке, конечно, уже не будет)

по моему, как раз то, что нужно. а как выполнить проверку :

Код:
если (был клик по элемнту1) то ... ?
Ответить с цитированием
  #6 (permalink)  
Старый 25.03.2013, 17:14
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Сообщение от bannndi
а как выполнить проверку
И делать такую проверку каждую милисекунду, да?
Тут другое нужно - слушать событие click.
$(el).on('click', function(event) { alert('clicked') });

Или $(el).click(fun..)
Ответить с цитированием
  #7 (permalink)  
Старый 25.03.2013, 17:19
Новичок на форуме
Отправить личное сообщение для bannndi Посмотреть профиль Найти все сообщения от bannndi
 
Регистрация: 25.03.2013
Сообщений: 7

Сообщение от danik.js Посмотреть сообщение
И делать такую проверку каждую милисекунду, да?
Тут другое нужно - слушать событие click.
$(el).on('click', function(event) { alert('clicked') });

Или $(el).click(fun..)

круто, спасибо, буду разбираться дальше)
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как узнать по какой ссылке кликнули? Rooner jQuery 3 19.12.2012 17:14
Подскажите как сделать меню на CSS если: greatilya (X)HTML/CSS 10 18.10.2009 20:26
можно ли, если да то как удалить строки из таблицы Avaria Я не знаю javascript 3 11.06.2009 03:03
клик по ссылке и сбивание скролла жбан Общие вопросы Javascript 3 06.05.2009 10:32
как выполнить движение объекта scuter Элементы интерфейса 5 08.06.2008 23:57