Quote Originally Posted by brittainmark View Post
zen cart 1.5.8
square web pay 1.0.4
bootstrap 3.5.2

I have an issue where the terms and conditions do not need to be ticked for an order to go through. I think it is connected to JavaScript and using preventDefault method. I believe that this means that required fields are not checked when the form is submitted. I have resolved the issue by adding the following to includes/modules/pages/checkout_payment/jscript_square_webPay.php

original starting line 157
Code:
                    var verifyBuyerResult = document.createElement("input");
                    verifyBuyerResult.setAttribute("type", "hidden");
                    verifyBuyerResult.setAttribute("name", "verifyBuyerResult");
                    verifyBuyerResult.setAttribute("value", JSON.stringify(verificationToken));
                    document.querySelector('[name="checkout_payment"]').appendChild(verifyBuyerResult);
                    cardButton.disabled = false;                 
                    document.forms["checkout_payment"].submit();
new
Code:
                    var verifyBuyerResult = document.createElement("input");
                    verifyBuyerResult.setAttribute("type", "hidden");
                    verifyBuyerResult.setAttribute("name", "verifyBuyerResult");
                    verifyBuyerResult.setAttribute("value", JSON.stringify(verificationToken));
                    document.querySelector('[name="checkout_payment"]').appendChild(verifyBuyerResult);
                    cardButton.disabled = false;                 
                    let isFormValid = document.forms["checkout_payment"].checkValidity();
                    if (isFormValid) {
                        document.forms["checkout_payment"].submit();
                    } else {
                        document.forms["checkout_payment"].reportValidity();
                    }
Something similar may be required for one page checkout!
this makes sense.

good catch.

best,