#forms #jquery #paypal #submit
#формы #jquery #paypal #Отправить
Вопрос:
У меня есть страница, использующая стандарт платежей Paypal с кнопками «купить сейчас» для многих таких продуктов, как этот.
<form id="form1" target="paypal" action="https://www.paypal.com/cgi-bin/webscr" method="post">
<input type="image" name="submit2" align="right" src="https://www.paypal.com//en_US/i/btn/sc-but-03.gif" alt="Make payments with PayPal - it's fast, free and secure!" />
<input type="hidden" name="cmd" value="_cart" />
<input type="hidden" name="business" value="email@gmail.com" />
<input type="hidden" name="no_note" value="1" />
<input type="hidden" name="add" value="1" />
<input type="hidden" name="lc" value="US" />
<input type="hidden" name="return" value="http://domain.com/confirm.html" />
<input type="hidden" name="cancel_return" value="http://domain.com" />
<input type="hidden" name="currency_code" value="USD" />
<input type="hidden" name="bn" value="PP-ShopCartBF" />
<input type="hidden" name="amount" value="5.00" />
<input type="hidden" name="item_name" value="A009" />
</form>
Приведенный выше код повторяется на странице для каждого товара, где изменяются только идентификатор формы и номера товара. В этом случае все товары имеют одинаковую цену.
До jQuery я бы просто поместил все повторяющиеся части в SSI.
Однако сейчас я изучаю jQuery и хотел бы свести все это к текстовой ссылке вместо кнопки PayPal и вставить номер товара в ссылку. Эта ссылка не должна находиться ни между какими тегами формы, если это возможно.
<a class="cartBuy" href="#" id="A009">Add to Cart</a>
Я знаю, что могу выбирать свои ссылки следующим образом…
$('.cartBuy a[id]')
Но теперь я немного заблудился. Как я могу использовать jQuery для отправки этой формы? Мне все еще нужно будет окружать мою ссылку тегами формы? Весь смысл этого в том, что мне не нужно создавать уникальную форму для каждого отдельного товара… просто одна ссылка для каждого продукта, и пусть один скрипт создает что-то, что отправляется (через ajax?). Я посмотрел на плагин формы jQuery, но я тоже запутался в этом, поскольку, похоже, мне все равно нужно, чтобы каждый элемент находился внутри уникального элемента формы. Я также рассматривал возможность написания jQuery всего HTML для каждой формы, но на самом деле это не сильно отличается от того, что я делал раньше с SSI.
(Это ссылки «купить сейчас», поэтому нет необходимости отслеживать несколько вариантов выбора… просто хочу отправлять каждую из них за раз.)
Спасибо!
ОТВЕТ:
Я использовал приведенный ниже ответ Джоша Лейтцеля.
-
Я включил на страницу один элемент формы, который содержал все скрытые элементы ввода, общие для всего.
-
Я полностью удалил кнопку отправки из формы, поскольку она не нужна.
-
Я добавил скрытый элемент ввода в форму one для item_name с пустым значением.
Ответ №1:
Для этого нужно выбрать идентификатор ссылки при нажатии на нее, ввести его в соответствующую форму input
, а затем отправить форму:
$('.cartBuy a').click(function(){
var id = $(this).attr('id'); // gets the item name from the link's id
$('#form1 input[name=item_name]').val(id); // writes the item name to the form field
$('#form1').submit(); // submits the form
return false; // prevents the link from being followed
});
Комментарии:
1. Итак, вы хотите сказать, что для всей страницы нужен только один элемент формы (устраняет избыточность), а опубликованный вами скрипт просто вводит номер продукта и отправляет? Очень приятно.
2. Что бы я ни делал, я не могу отправить это с помощью этого метода.
3. Не могли бы вы опубликовать код, который вы используете, возможно, на jsfiddle.net ?
4. Ваш код отлично работает на другой странице … есть конфликт с некоторыми другими материалами, которые мне нужно изолировать.
5. У меня был другой скрипт jQuery, который изменял мои ссылки после того, как я добавил этот новый обработчик кликов. Теперь это работает, и я отредактировал свой вопрос с подробностями. Спасибо!