Onsubmit не работает в Chrome

У меня есть две формы и кнопка. В фаерфоксе все работает нормально. Я получаю новое окно с платежом Paypal, и в окне, где все произошло, я получаю отправленную форму send_mail, которая отправит электронное письмо пользователю. Как я могу заставить это работать в Chrome? Почему это не работает? Я пробовал что угодно (или так я думаю)!

So:

<form name="registerForm" id="registerForm" target="_blank" action="paypal_url" method="post" onsubmit="$('#send_mail').submit();">
...
</form>

<form name="send_mail" id="send_mail" action="" method="post">
...
</form>

<a onclick="$('#registerForm').submit()">Go to paypal and send confirmation mail</a>

person Bogdan    schedule 23.02.2011    source источник
comment
onsubmit не срабатывает при использовании submit().   -  person pimvdb    schedule 23.02.2011


Ответы (3)


Если у вас нет действительно веских причин для использования отправки только с помощью javascript, зачем настраивать форму так, чтобы она была непригодной для использования, если есть ошибка javascript?

Используйте стандартный ввод формы типа submit, присвойте ему идентификатор, при необходимости измените внешний вид или текст отправки с помощью javascript и создайте события onclick и onsubmit в качестве слоя поверх этой функциональности и заставьте их возвращать false. Лучше запасные варианты.

Я не уверен, почему вы пытаетесь отправить две формы одновременно, но как насчет этой альтернативы (обратите внимание, что я не тестировал этот код, но он должен передать идею):

<script type='text/javascript'>
$('#fallback-register-submit').hide(); // Hide the submit button.
$('#registration-link').show().click(function (){ // Show the link and attach the action.
    $('#registerForm').submit();
    return false; // Don't bother following the link anchor.
});
</script>

<form name="registerForm" id="registerForm" target="_blank" action="paypal_url" method="post""><!-- Single form that does all of the submitting. -->
...
...
<input type='submit' id='fallback-register-submit'>Register</input><!-- In the event of a javascript error for their browser, they can still buy your stuff! -->
<a id='registration-submit' style='display:none'>Go to paypal and send confirmation mail</a>
</form>
person Kzqai    schedule 23.02.2011
comment
потому что одна форма-это форма PayPal, а другая-это спасибо + обновление в базе данных - person Bogdan; 23.02.2011
comment
Хммм, ну, если вы не можете объединить формы, конечно, вы можете просто добавить дополнительную отправку в код, который я разместил, хотя это не идеально. Единственный другой подход к этой ситуации, который я мог придумать, - это отправить свою форму перед PayPal, чтобы вы знали об ожидании, что пользователь проходит через ваш процесс, а затем форма PayPal будет последним шагом в многоэтапном форма. Если это не стоит для вас хлопот или если это не очень важная платежная форма, оставление той или иной формы неотправленной для пользователей javascript действительно может быть практически всем, что осталось. - person Kzqai; 24.02.2011

почему бы просто не связать обе отправки с вашим a?

onclick="$('#send_mail').submit(); $('#registerForm').submit();"

если вы хотите, чтобы другая форма отправлялась ПОСЛЕ первой:

onclick="$('#send_mail').submit( function() {$('#registerForm').submit();}); "

предполагая, что вы используете jquery здесь

person corroded    schedule 23.02.2011
comment
первый метод отправляет только #registerForm (открывает окно PayPal, но не отправляет #send_mail), а второй ничего не делает. - person Bogdan; 23.02.2011

Насколько я понимаю, вы хотите отправить форму по ссылке?

Почему бы тогда не использовать «простой» javascript? Без jQuery: document.getElementById(....).submit()

Или свяжите событие отправки со ссылкой обычным способом jQuery:

$(document).ready(function() {
 $(".yourLinkClass").click(function() { // or "#yourLinkId" for that matter
  $("#registerForm").submit();
 });
});

И вы также можете использовать кнопку отправки;)

person Ibolit    schedule 23.02.2011
comment
да, все работает, но другая форма не отправляется... #send_mail - person Bogdan; 23.02.2011
comment
Что ж, если вы хотите отправить две формы, я бы предложил, например, разместить их (или хотя бы одну из них) в разных фреймах. Или, и я думаю, что это лучший вариант, вы собираете все необходимые данные в одной форме, передаете их на страницу, которая должна открыться в этом же окне, и эта страница передает данные, которые сейчас находятся в вашей другой форме, на страницу, которую вы открываете в файле _blank. Или в скрипте, который я предложил, вы, вероятно, можете добавить соответствующую строку для формы _blank. - person Ibolit; 23.02.2011