Я проверяю форму для маршрута. После успешной проверки я хочу отправить форму на другой маршрут, чтобы перетащить следующую страницу на портале. Это правильный способ сделать это? Это не правильно.
Я пытался обработать проверку по нажатию кнопки, но она немедленно отправляет форму, даже если произошла ошибка.
В настоящее время у меня есть атрибуты 'action' & 'method' в форме вместе с атрибутом submit для нокаута для обработки проверки. Это где я чувствую себя вне.
В следующем коде вы увидите, что я запускаю .validate () в случае успеха, тогда как раньше я запускал .submit ()
- Метод проверки (handleProceed) *
self.handleProceed = function() {
$.ajax({
type: "POST",
url: "/apps/o365/validate_address",
dataType: "json",
cache: false,
}).always( function(jqXHR, textStatus) {
if ( textStatus != "success" || jqXHR.eligible == false ) {
$("#proceedToPurchase").removeClass("disabled processing").text("Proceed to Purchase");
$("#proceedToPurchaseModal").modal("show");
} else if ( textStatus === "timeout" ) {
alert("got timeout");
$('#proceedToPurchase').addClass("disabled");
} else {
$("#proceedToPurchase").addClass("processing");
$("#o365Form").validate();
}
});
};
- Как я обращаюсь с атрибутами формы *
<form id="o365Form" data-bind="attr: { action : purchaseURL }, submit: handleProceed" method="POST">
- Как работает кнопка в форме *
<button
id="proceedToPurchase"
type="submit"
class="btn btn-secondary btn-block py-4 font-20"
data-bind="attr: { disabled: !formIsFilled() }"
>
Ожидаемая:
- Кнопка нажата
- handleProceed () запускается и проверяет
- ТО форма отправлена на следующую страницу