Отправить форму PayPal с помощью JS не работает - PullRequest
2 голосов
/ 11 марта 2011

У меня есть форма PayPal следующим образом: (некоторые поля добавляются с помощью jQuery)

<form method="post" action="https://www.paypal.com/cgi-bin/webscr">
    <input type="hidden" value="_s-xclick" name="cmd">
    <input type="hidden" value="sdfgsdfg" name="hosted_button_id">
    <input type="button" value="Purchase One Year License" name="submit" class="pp_button" id="35" style="background-color: rgb(255, 255, 255);">
    <input type="hidden" value="35" name="cs_project_id">                                            
    <input type="hidden" value="6d04c7a241ad4415eb194a90dc252b09" name="cs_transaction_id">
</form>

Я пытаюсь отправить форму, используя 3-й элемент input (type="button"), используя этокод:

$(".pp_button").click(function()
{
    var button = $(this);
    button.parent().submit();
});

Это должно работать нормально, верно?Я использую var button из-за других частей позже в функции click().Я проверил tagName из button.parent(), и он указан как FORM, так что все в порядке ...

Что я здесь не так сделал?Обычно это работает нормально ... Это потому, что я вставляю теги (последние два тега input) из вызова AJAX?Что-то другое?Отсутствие зрелого чеддера на моем столе?

Спасибо,

Джеймс

Ответы [ 2 ]

4 голосов
/ 11 марта 2011

Почему бы вам просто не установить тип ввода от button до submit?Это заставит кнопку отправить форму и не будет нуждаться в Javascript?

Или, если вы хотите использовать javascript (jQuery), вы можете дать форме идентификатор, подобный этому:

<form method="post" action="https://www.paypal.com/cgi-bin/webscr" id="paypal_form">

И когда вы хотите отправить форму, вы можете позвонить:

$("#paypal_form").submit();
3 голосов
/ 11 марта 2011

У вас есть элемент управления формы с именем submit. Это перекрывает функцию submit с HTMLElementNode.

Лучшее решение - не использовать JavaScript здесь. Вы говорите, что вам нужно, чтобы другие вещи происходили, но у пользователя может быть отключен JS, поэтому, если они важны, вам почти наверняка будет лучше найти другой путь.

Простое решение - изменить имя.

Сложным решением было бы получить копию метода submit из другой формы, а затем использовать его вместе с формой, которую вы хотите отправить:

 document.createElement('form').submit.apply(this.form);
...