如果使用jquery验证和签名板输入了签名,如何添加检查?

如果使用jquery验证和签名板输入了签名,如何添加检查?,jquery,canvas,html5-canvas,jquery-validate,signaturepad,Jquery,Canvas,Html5 Canvas,Jquery Validate,Signaturepad,我正在使用验证表单中的多个字段以及。我想验证是否在验证所有其他输入字段的同时在html画布(签名板)上绘制了内容 不幸的是,向jquery验证提交器添加一个函数来检查画布是否有签名是不够的,因为这只会在满足所有其他必需字段后触发。我可以向jQueryValidator添加方法,但我很确定这些方法只用于验证输入的内容,而不是画布 我可以用“signaturePad.isEmpty()”检查签名是否存在。理想情况下,有一种方法可以添加这样一个与任何验证同时进行的函数: var errorEx

我正在使用验证表单中的多个字段以及。我想验证是否在验证所有其他输入字段的同时在html画布(签名板)上绘制了内容

不幸的是,向jquery验证提交器添加一个函数来检查画布是否有签名是不够的,因为这只会在满足所有其他必需字段后触发。我可以向jQueryValidator添加方法,但我很确定这些方法只用于验证输入的内容,而不是画布

我可以用“signaturePad.isEmpty()”检查签名是否存在。理想情况下,有一种方法可以添加这样一个与任何验证同时进行的函数:

    var errorExists = false;
    if( signaturePad.isEmpty()){
      if (errorExists == false){
        $( "#signature-pad" ).append( "<div id="sig-error">A signature is required</div>" );
        errorExists = true;
      }
    }else if( !signaturePad.isEmpty()) {
      if (errorExists == true){
        $('#sig-error').remove();
      }
    }
var errorExists=false;
if(signaturePad.isEmpty()){
if(errorExists==false){
$(“#签名板”)。追加(“需要签名”);
errorExists=true;
}
}如果(!signaturePad.isEmpty()),则为else{
if(errorExists==true){
$(“#sig错误”).remove();
}
}
…并且只有当jquery验证和签名都满足时,才继续实际提交表单


有没有一种方法可以在其他验证发生的同时触发函数?如何阻止表单提交,除非我的两个条件都得到满足,而不仅仅是jquery验证?

在jquery验证提交程序中,如果签名未填写,则返回false:

    if( signaturePad.isEmpty()){
            console.log('it is empty');
            return false;            
        }
这将防止在没有签名的情况下提交表单

<script type="text/javascript">
            window.onload = function() {
              $( "#application" ).submit(function( event ) {
                var canvas = document.getElementById('canvas');
                var sigData = canvas.toDataURL("image/png");
                $('#signature').attr('value', sigData);
              });
            }
          </script>
要像jquery验证错误消息的其余部分一样显示缺少签名的错误消息,请将函数绑定到提交输入的单击:

    $('#submit_form').click(function(){
      if( signaturePad.isEmpty()){
        if (errorExists === false){
          $( "#signature-pad" ).append( "<div class='error' id='sig-error'>A signature is required</div>" );
          errorExists = true;
        }
      }else if( !signaturePad.isEmpty()) {
        if (errorExists === true){
          $('#sig-error').remove();
          errorExists = false;
        }
      }
    });
$(“#提交表单”)。单击(函数(){
if(signaturePad.isEmpty()){
if(errorExists==false){
$(“#签名板”)。追加(“需要签名”);
errorExists=true;
}
}如果(!signaturePad.isEmpty()),则为else{
if(errorExists==true){
$(“#sig错误”).remove();
errorExists=false;
}
}
});
在某处声明变量:
var errorExists=false

我创建了一个带有自定义验证的隐藏字段来处理这个问题

JavaScript将隐藏字段的值设置为base64编码的签名

<script type="text/javascript">
            window.onload = function() {
              $( "#application" ).submit(function( event ) {
                var canvas = document.getElementById('canvas');
                var sigData = canvas.toDataURL("image/png");
                $('#signature').attr('value', sigData);
              });
            }
          </script>
<input data-rule-signature="true" id="signature" name="signature" type="hidden">
jQuery.validator.addMethod("signature", function(value, element, options) {
    if( signaturePad.isEmpty()){
            return false;            
        }
    return true;
}, "Your signature is required");