付款前使用 jquery 插件验证账单地址表单

Validating billing address form using jquery plugin before payment

提问人:MyLegend2020 Wilson 提问时间:10/5/2023 最后编辑:MyLegend2020 Wilson 更新时间:10/5/2023 访问量:34

问:

我有帐单地址的 HTML 表单,并为每个表单字段创建了唯一的 ID,但问题没有正确验证,它必须首先检查字段何时为空,然后才能进入下一页。以下是我当前的 jquery 和 HTML 代码;但目前代码正在做的事情是显示警报消息并进入下一页,它必须检查所有字段是否有空,一旦不显示绿色以插入数据到表单中,那么一旦验证用户就可以单击进入付款页面。

HTML 代码

<div class="form-outline mb-4">
    <input type="text" id="form7Example1" class="form-control" />
    <label class="form-label" for="form7Example1">First name</label>
</div>
<div class="form-outline mb-4">
    <input type="text" id="form7Example2" class="form-control" />
    <label class="form-label" for="form7Example2">Last name</label>
</div>
<div class="form-outline mb-4">
    <input type="text" id="form7Example3" class="form-control" />
    <label class="form-label" for="form7Example3">Company name</label>
</div>
<div class="form-outline mb-4">
    <input type="text" id="form7Example4" class="form-control" />
    <label class="form-label" for="form7Example4">Address</label>
</div>
<div class="form-outline mb-4">
    <input type="email" id="form7Example5" class="form-control" />
    <label class="form-label" for="form7Example5">Email</label>
</div>
<div class="form-outline mb-4">
    <input type="number" id="form7Example6" class="form-control" />
    <label class="form-label" for="form7Example6">Phone</label>
</div>
<div class="form-outline mb-4">
    <textarea class="form-control" id="form7Example7" rows="4"></textarea>
    <label class="form-label" for="form7Example7">Additional information</label>
</div>
<button id="proceed-to-payment" class="btn btn-block btn-primary my-3 py-3">Proceed To Payment</button>

jQuery代码

/***
@author:Gcobani Mkontwana
@date:10/05/2025
@Script handles billing validation address before proceed payment.
**/
$(document).ready(function() {
  // Function to validate and update field borders
  function validateAndUpdateField(fieldId) {
    const $field = $(fieldId);
    const fieldValue = $field.val().trim();
    if (fieldValue === '') {
      // Field is empty, set border color to red
      $field.css('border-color', 'red');
    } else {
      // Field is filled, set border color to green
      $field.css('border-color', 'green');
    }
  }

  // Event listener for input fields
  $('.form-control').on('input', function() {
    validateAndUpdateField($(this));
  });

  // Event listener for the "Proceed To Payment" button
  $('#proceed-to-payment').click(function() {
    // Loop through all input fields and validate them
    let isValid = true;
    const requiredFields = ['#form7Example1', '#form7Example2', '#form7Example4', '#form7Example5', '#form7Example6'];
    requiredFields.forEach(function(fieldId) {
      validateAndUpdateField(fieldId);
      const fieldValue = $(fieldId).val().trim();
      if (fieldValue === '') {
        isValid = false;
      }
    });

    // If any field is empty, prevent form submission
    if (!isValid) {
      alert('Please fill in all required fields.');
      return false;
    }

    // Proceed with payment if all required fields are filled
    alert('Payment successful!'); // Replace with your actual payment logic
  });
});

按钮继续下一页的 JavaScript 逻辑

<script>
document.getElementById("proceed-to-payment").addEventListener("click", function () {
    // Get cart data from the PHP-generated HTML
    var cartItems = <?php echo json_encode($cartItems); ?>;
    var subtotal = <?php echo $totalPrice; ?>;
    var shippingCost = <?php echo $shippingCost; ?>;
    var totalPrice = subtotal + shippingCost;
    
    // Prepare data to send to the payment_integration page
    var dataToSend = {
        cartItems: cartItems,
        totalPrice: totalPrice
    };

    // Make an AJAX request to the payment_integration page
    $.ajax({
        type: "POST",
        url: "payment_integration.php",
        data: JSON.stringify(dataToSend),
        contentType: "application/json",
        success: function (response) {
            // Redirect to the payment page
            var redirectUrl = "payment_integration.php?cartData=" + encodeURIComponent(JSON.stringify(dataToSend));
            window.location.href = redirectUrl;
            console.log("cartitem", dataToSend);
        },
        error: function (xhr, status, error) {
            // Handle errors if necessary
            console.error(error);
        }
    });
});
HTML jQuery twitter-bootstrap 验证 计费

评论


答:

0赞 catsarebest 10/5/2023 #1

尝试在输入标签中使用“required”,例如:

<input type="text" id="form7Example1" class="form-control" required/>

评论

0赞 MyLegend2020 Wilson 10/5/2023
对不起,伙计,更新了我的 javascript 的最后一个过去,我认为我在验证之前没有很好地处理按钮的问题,我已经要求但验证得不好。看看我的 javascript 的最后一部分。