Используйте jQuery для оптимизации форм корзины PayPal

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

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

Спасибо!


ОТВЕТ:

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

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

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

  3. Я добавил скрытый элемент ввода в форму 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, который изменял мои ссылки после того, как я добавил этот новый обработчик кликов. Теперь это работает, и я отредактировал свой вопрос с подробностями. Спасибо!