Jquery 如何在ajax成功后禁用signaturePad(画布)

Jquery 如何在ajax成功后禁用signaturePad(画布),jquery,canvas,html5-canvas,signaturepad,Jquery,Canvas,Html5 Canvas,Signaturepad,我正在用这个 我的应用程序通过ajax调用提交签名。在成功返回ajax时,我希望禁用用户对签名的任何更改。我最后尝试的是以下内容,但签名板仍处于活动状态,并且正在绘制线条(侦听器未分离): 有人知道如何更新现有signaturePad,使其变为禁用模式吗?试试这个 $('.sigPad').signaturePad('disable'); 添加到jquery.signaturepad.js: $.extend(自我、{ /** *用于存储签名板当前版本的属性 */ signaturePad:

我正在用这个

我的应用程序通过ajax调用提交签名。在成功返回ajax时,我希望禁用用户对签名的任何更改。我最后尝试的是以下内容,但签名板仍处于活动状态,并且正在绘制线条(侦听器未分离):

有人知道如何更新现有signaturePad,使其变为禁用模式吗?

试试这个

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

添加到jquery.signaturepad.js:

$.extend(自我、{
/**
*用于存储签名板当前版本的属性
*/
signaturePad:“{{version}”
...
,disableCanvas:function(){disableCanvas()}
,clearAndDraw:function(){drawIt()}
…
我通常使用:

api.off();

它在我的软件中工作

任何人在使用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
      }}/>
  )
}
const SignatureDisplay=({sigValue})=>{
const padRef=useRef({})
useffect(()=>{
padRef.current.fromData(sigValue | |[]))
padRef.current.off()
}, [])
返回(
)
}

以下选项更改有效:$sigPadElem.signaturePad({penColour:'#FF0000'})。重新生成($sigPadElem.find('.output').val());您介意分享您最终使用的解决方案吗?谢谢。我最近删除了签名板。但在此之前,我使用了一种方法来检查签名是否存在,然后用签名加载非活动的签名板。应该有一个如何显示现有签名的示例。有点离题,但您是如何在中获得padRef.current的useEffect?我的总是在尝试调用时抛出未定义的fromData@LuanScudeler有点欺骗,但是如果你将一个参数传递给useRef,它将是初始值,在上面的代码中,我将它设置为一个空对象,以防止它在useffect中爆炸。或者,你可以在useffect中添加一个guard子句,例如
if(!padRef.current){return}
。很抱歉没有早点回来,希望这有帮助。
const SignatureDisplay = ({ sigValue }) => {
  const padRef = useRef({})

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

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