I have a form that requires user to enter their digital signature before signing up. It looks like below:
So prior to signing up, user MUST enter their signature on the canvas box provided. I use jquery validation to validate my other fields before coming to this final page for signature.
I can validate all the fields except for the signature field. Any idea what I can do?
<div class="row">
  <div class="col-12 col-md-8 offset-md-2 pl-3 pr-3 pt-2 mb-0">
    <canvas class="display-block signature-pad" style="touch-action: none;"></canvas>
    <p id="signatureError" name="signatureError" style="color: red; display: none;">Please provide your signature.</p>
    <div class="p-1 text-right">
      <button id="resetSignature" class="btn btn-sm" style="background-color: lightblue;">Reset</button>
      <button id="saveSignature" class="btn btn-sm" style="background-color: #fbcc34;">Save</button>
    </div>
    <input type="hidden" name="signature" id="signatureInput">
  </div>
</div>
<div class="row">
  <div class="col-12 mb-0 pt-2">
    <div class="text-right">
      <input type="hidden" name="registrationFor" value="customer">
      <button type="submit" id="submit" class=" btn next-button bjsh-btn-gradient text-right">Sign Up</button>
    </div>
  </div>
</div>
 var canvas = document.querySelector("canvas");
    const signatureSaveButton = document.getElementById("saveSignature");
    const signatureResetButton = document.getElementById("resetSignature");
    const signatureError = document.getElementById("signatureError");
    const signatureInput = document.getElementById("signatureInput");
    // Initialize a new signaturePad instance.
    var signaturePad = new SignaturePad(canvas);
    // Clear signature pad.
    signatureResetButton.addEventListener("click", function(event) {
      signaturePad.clear();
    });
    // Save signature pad as data url.
    signatureSaveButton.addEventListener("click", function(event) {
      if (signaturePad.isEmpty()) {
        signatureError.style.display = "block";
      } else {
        signatureUrl = signaturePad.toDataURL();
        signatureInput.value = signatureUrl;
      }
    });
    // Validate registration tab before moving to the next tab
    $("#register-form").validate({
      rules: {
        email: {
          required: true,
          // Specify that email should be validated
          // by the built-in "email" rule
          email: true
        },
        password: {
          required: true,
          minlength: 8,
        },
        password_confirmation: {
          required: true,
          minlength: 8,
          equalTo: "#password"
        },
        full_name: {
          required: true
        },
        nric: {
          required: true
        },
        address_1: {
          required: true
        },
        address_2: {
          required: true
        },
        address_3: {
          required: true
        },
        postcode: {
          required: true
        },
        city: {
          required: true
        },
        state: {
          required: true
        },
        contact_number_home: {
          required: true
        },
        contact_number_mobile: {
          required: true
        },
        existing_customer: {
          required: true
        },
        signatureError: {
          required: true
        },
      },
      messages: {
        email: {
          required: "Please enter an email",
          email: "The email is not valid"
        },
        password: {
          required: "Please enter a password",
          minlength: "Password must be minimum of 8 characters"
        },
        password_confirmation: {
          required: "Please confirm your password",
          minlength: "Passmust must be minimum of 8 characters",
          equalTo: "Password must be same as above"
        },
        full_name: {
          required: "Please enter your full name"
        },
        nric: {
          required: "Please enter your identity card number"
        },
        address_1: {
          required: "Please enter your address"
        },
        address_2: {
          required: "Please enter your address"
        },
        address_3: {
          required: "Please enter your address"
        },
        postcode: {
          required: "Please enter your postcode"
        },
        city: {
          required: "Please select your city"
        },
        state: {
          required: "Please select your state"
        },
        contact_number_home: {
          required: "Please enter your home number"
        },
        contact_number_mobile: {
          required: "Please enter your mobile number"
        },
        signatureError: {
          required: "Please provide your signature"
        },
      }
    });
    // validate fields in 1st tab
    $('#next-btn').click(function() {
      if ($("#register-form").validate().element('#email') && $("#register-form").validate().element('#password') && $("#register-form").validate().element('#password-confirm')) {
        nextTab.find('a').trigger('click');
      } else {}
    });
    // validate fields in 2nd tab
    $('#next-btn2').click(function() {
      if ($("#register-form").validate().element('#full_name') && $("#register-form").validate().element('#nric') && $("#register-form").validate().element('#address_1') && $("#register-form").validate().element('#address_2') && $("#register-form").validate().element('#address_3') && $("#register-form").validate().element('#postcode') &&
        $("#register-form").validate().element('#city') && $("#register-form").validate().element('#state') && $("#register-form").validate().element('#contact_number_home') &&
        $("#register-form").validate().element('#contact_number_mobile') && $("#register-form").validate().element('#existing_customer')
      ) {
        nextTab.find('a').trigger('click');
      } else {}
    });
    // validate signature input in 3rd tab
    $('#submit').click(function() {
      if ($("#register-form").validate().element('#signatureError')) {
        alert("Success");
      } else {
        alert("Failure");
      }
    });

 
    