You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

点击提交按钮时Canvas toDataURL无法写入隐藏输入框问题

问题分析

你遇到的问题根源在于每次点击提交按钮时才创建新的SignaturePad实例,这个新实例无法读取之前在画布上绘制的签名内容,自然也就没法把有效数据写入隐藏输入框。

修复方案

1. 提前初始化SignaturePad实例

把SignaturePad的初始化逻辑放在页面加载完成时,而不是点击提交按钮时,这样实例能一直关联画布上的签名内容。

2. 点击提交时直接复用实例获取数据

用已初始化好的实例调用toDataURL(),就能拿到正确的签名数据。

修正后的代码

JavaScript 代码

<script type="text/javascript">
    $(document).ready(function () {
        // 页面加载完成就初始化SignaturePad,绑定到画布
        var canvas = document.querySelector('#colors_sketch');
        var pad = new SignaturePad(canvas);

        $('#myBtn1').click(function () {
            // 直接用已有的实例获取签名数据
            var data = pad.toDataURL();
            $('#savetarget').attr('src', data);
            $('#SignatureDataUrl').val(data);
        });
    });
</script>

HTML 代码(保持原结构即可)

<canvas id="colors_sketch" width="500" height="200" style="border: 1px solid #ccc;"></canvas>
<input type="hidden" asp-for="SignatureDataUrl">
<input style="float: right; margin-bottom:20px" type="submit" id="myBtn1" value="Submit" class="btn btn-primary" />
额外排查建议
  • 检查页面是否正确引入了SignaturePad的脚本文件,避免因脚本未加载导致实例创建失败。
  • 可以在点击事件里加一行console.log(data),打开浏览器控制台查看是否输出了有效的DataURL,以此区分是数据获取问题还是赋值问题。

内容的提问来源于stack exchange,提问作者Anjali

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 18:32:36