如何在ajax成功后禁用signaturePad(canvas)

时间:2015-11-09 02:36:50

标签: jquery canvas html5-canvas signaturepad

我正在使用此plugin

我的应用程序使用ajax调用提交签名。在成功的ajax返回时,我想禁用用户的任何签名更改。我尝试的最后一件事是跟随,但签名板仍然是活动的并且绘制线条(听众没有分离):

   function showResponse(itemJson, statusText, xhr, $form) {

    if (itemJson.status == 'success') {

        debugger;

        $($form.find('.clearButton')).remove();
        $($form.find('button')).remove();

        $form.find('input').attr('readonly', 'readonly');

        var api = $form.signaturePad();
        var sig = api.getSignatureString();

        api.updateOptions({displayOnly: true})
//        $form.signaturePad({displayOnly: true}).regenerate(sig);

    }
}

有谁知道如何更新现有的signaturePad,所以它会变成禁用模式?

4 个答案:

答案 0 :(得分:1)

添加到jquery.signaturepad.js:



  $.extend(self, {
    /**
     * A property to store the current version of Signature Pad
     */
    signaturePad : '{{version}}'
...
    , disableCanvas : function () { disableCanvas() }    

    , clearAndDraw : function () { drawIt() }
...




使用它:

$sigPadElem.signaturePad().disableCanvas();

或:

$sigPadElem.signaturePad().clearAndDraw();

我想知道是否可以在不修改插件的情况下完成此功能? (顺便说一句,我无法给自己奖励......)

答案 1 :(得分:1)

对于使用React包时找到该线程的任何人,react-signature-canvas;您可以通过调用padRef.current.off().

来禁用它

这是显示给定签名(sigValue)并被禁用的便笺本的基本示例

const SignatureDisplay = ({ sigValue }) => {
  const padRef = useRef({})

  useEffect(() => {
    padRef.current.fromData(sigValue || [])
    padRef.current.off()
  }, [])

  return (
    <SignaturePad
      ref={padRef}
      canvasProps={{
        height: 200,
        width: 400
      }}/>
  )
}

答案 2 :(得分:0)

我通常使用:

api.off();

它在我的软件中有效

答案 3 :(得分:-2)

试试这个

$('.sigPad').signaturePad('disable');