Используйте jQuery для оптимизации форм корзины PayPal - PullRequest
3 голосов
/ 23 мая 2011

У меня есть страница с использованием Paypal Payments Standard с кнопками "купить сейчас" на многих продуктах, таких как этот.

<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.

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

благодарственные!


ОТВЕТ:

Я использовал ответ Джоша Лейтзеля, приведенный ниже.

  1. Я включил один элемент формы на странице, который содержал все скрытые элементы ввода, общие для всего.

  2. Я полностью удалил кнопку отправки из формы, поскольку она не нужна.

  3. Я добавил скрытый элемент ввода в одну форму для item_name с пустым значением.

1 Ответ

4 голосов
/ 23 мая 2011

Это можно сделать, выбрав ссылочный идентификатор из ссылки при ее нажатии, запишите ее в соответствующую форму 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
});
...