#javascript #php #forms #prompt #onsubmit
#javascript #php #формы #запрос #onsubmit
Вопрос:
Я использую php5.6 и печатаю html и пытаюсь получить подтверждение propmt для работы с JS. Заказывая товары у weppage, он должен спросить, уверен ли пользователь, что заказ сделан, и он / она переходит к оформлению заказа после «ok». Отменено для продолжения покупок или изменения личной информации.
Запрос работает, if(!conf)
выполняется, и страница перенаправляется наверх, но он по-прежнему отправляет форму и создает заказ на отмену. Вот код, который включается в другой файл, если это имеет значение. некоторое время искал stackoverflow и не видел такой проблемы. Пытался поставить ‘onclick’ на кнопку, но это было еще хуже и привело к некоторым ошибкам.
ob_start();
?>
<script type="text/javascript">
function continueToPayment() {
var conf = confirm("<?php echo SQL::Translate('payment_confirm_text') ?>");
if(!conf) {
window.location.href = '#';
return false;
}
else{
return true;
}
}
</script>
<?php
print "<form onsubmit='return continueToPayment()' action='" . SQL::Table("Pages")->Href("thank_you") . "?pm=cashamp;ord=$next_reference_number' method="POST">";
$amount = number_format((($_SESSION['sc_data']['final_total'])/100),2,".","");
print "<input type='hidden' name='action' value='send_cash_order'>";
echo ReturnOrderSubmitInfoHtml();
print "<button type='submit' id='send_order' class='pc-btn pc-btn-sc'>" . SQL::Translate(PrintPaymentText('cash')) . "</button>";
print "<br/>";
print "</form>";
$form = ob_get_clean();
Ответ №1:
Спасибо вам всем за то, что внесли свой вклад в мою проблему! Я решил это, так что проблема заключалась в том, что уже был JS-файл, выполняющий проверку на принятие условий, и я попытался поместить js в php, который, по-видимому, был переопределен этим js-файлом. Я положил
var conf = confirm("example");
if(!conf) {
window.scrollTo(0, 0);
return false;
}
там и это сработало. Уже был event.preventDefault()
. window.scrollTo(0, 0) работал так же, как и window.Расположение.href = ‘#’ . В любом случае, теперь мне нужно беспокоиться только о переводах и вносить изменения в другие файлы, а не платить наличными.
Комментарии:
1. Рад, что вы это поняли!
Ответ №2:
В части формы это должно быть onsubmit='continueToPayment(event)'
.
Затем в функции вам нужно остановить поведение формы по умолчанию с помощью event.preventDefault()
метода.
function continueToPayment (event) {
var conf = confirm("<?php echo SQL::Translate('payment_confirm_text') ?>")
if (!conf) {
window.scrollTo(0, 0)
event.preventDefault()
return false
}
// else case unnecessary
}
Комментарии:
1. Он по-прежнему отправляет форму, но теперь после перенаправления в начало корзины покупок кнопка, которая должна выдавать подсказку, выдает ошибку, потому что для этого идентификатора уже есть заказ, поэтому заказ не может быть создан.
2. Я исправил то, что должно быть
onsubmit
, также убедитесь, что у вас естьevent
в скобках в определении функции.3. Дело в том, что он по-прежнему отправляет заказ при 1-й отмене, но затем, после того, как он прокручивается в начало страницы и снова нажимается «Отправить», он сообщает, что встроена ошибка, потому что отсутствует информация в порядке, и приглашение не появляется, так что при нажатии 2-й кнопки происходит правильная вещь. Теперь я думаю, что это что-то другое, чем этот JS.