Click here to Skip to main content
15,897,891 members
Please Sign up or sign in to vote.
0.00/5 (No votes)
See more:
Hi,

I have a created a demo code for signature using the example from the link :-

Building a Signature Control Using Canvas[^]

in asp .net. This example works fine on computer , but when I access the url from an Ipad the signature control does not work. Please help in this.


Below is the code :-

ASPX :-

XML
<%@ Page Language="VB" AutoEventWireup="false" CodeFile="Default.aspx.vb" Inherits="_Default" %>

<!doctype html>
<html>
<head>
    <title>Signature</title>
    <script src="signature.js" type="text/javascript"></script>
    <link href="signature.css" rel="stylesheet" type="text/css" />
    <script type="text/javascript">
        function loaded() {
            var signature = new ns.SignatureControl({ containerId: 'container', callback: function () {
                alert('hello');
            }
            });
            signature.init();
        }

        window.addEventListener('DOMContentLoaded', loaded, false);
    </script>
</head>
<body>
    <div id="container">
        <h1>
            HI
        </h1>
         <asp:WebSignature id="WebSignature1" runat="server"></asp:WebSignature>
    </div>
</body>
</html>


Javascript :-

C#
(function (ns) {
    "use strict";

    ns.SignatureControl = function (options) {
        var containerId = options && options.canvasId || "container",
            callback = options && options.callback || {},
            label = options && options.label || "Signature",
            cWidth = options && options.width || "300px",
            cHeight = options && options.height || "300px",
            btnClearId,
            btnAcceptId,
            canvas,
            ctx;

        function initCotnrol() {
            createControlElements();
            wireButtonEvents();
            canvas = document.getElementById("signatureCanvas");
            canvas.addEventListener("mousedown", pointerDown, false);
            canvas.addEventListener("mouseup", pointerUp, false);
            ctx = canvas.getContext("2d");
        }

        function createControlElements() {
            var signatureArea = document.createElement("div"),
                labelDiv = document.createElement("div"),
                canvasDiv = document.createElement("div"),
                canvasElement = document.createElement("canvas"),
                buttonsContainer = document.createElement("div"),
                buttonClear = document.createElement("button"),
                buttonAccept = document.createElement("button");

            labelDiv.className = "signatureLabel";
            labelDiv.textContent = label;

            canvasElement.id = "signatureCanvas";
            canvasElement.clientWidth = cWidth;
            canvasElement.clientHeight = cHeight;
            canvasElement.style.border = "solid 2px black";

            buttonClear.id = "btnClear";
            buttonClear.textContent = "Clear";

            buttonAccept.id = "btnAccept";
            buttonAccept.textContent = "Accept";

            canvasDiv.appendChild(canvasElement);
            buttonsContainer.appendChild(buttonClear);
            buttonsContainer.appendChild(buttonAccept);

            signatureArea.className = "signatureArea";
            signatureArea.appendChild(labelDiv);
            signatureArea.appendChild(canvasDiv);
            signatureArea.appendChild(buttonsContainer);

            document.getElementById(containerId).appendChild(signatureArea);
        }

        function pointerDown(evt) {
            ctx.beginPath();
            ctx.moveTo(evt.offsetX, evt.offsetY);
            canvas.addEventListener("mousemove", paint, false);
        }

        function pointerUp(evt) {
            canvas.removeEventListener("mousemove", paint);
            paint(evt);
        }

        function paint(evt) {
            ctx.lineTo(evt.offsetX, evt.offsetY);
            ctx.stroke();
        }

        function wireButtonEvents() {
            var btnClear = document.getElementById("btnClear"),
                btnAccept = document.getElementById("btnAccept");
            btnClear.addEventListener("click", function () {
                ctx.clearRect(0, 0, canvas.width, canvas.height);
            }, false);
            btnAccept.addEventListener("click", function () {
                callback();
            }, false);
        }

        function getSignatureImage() {
            return ctx.getImageData(0, 0, canvas.width, canvas.height).data;
        }

        return {
            init: initCotnrol,
            getSignatureImage: getSignatureImage
        };
    }
})(this.ns = this.ns || {});


CSS :-

CSS
#signatureCanvas
{
    background-color: #fff;
}

#btnClear
{
    float: right;
    width: 88px;
    height: 32px;
    border: solid 2px #cacaca;
    background-color: #636363;
}

#btnAccept
{
    float: left;
    width: 88px;
    height: 32px;
    border: solid 2px #fff;
    background-color: #ff6600;
}

.signatureArea
{
    width: 300px;
    color: #ff6600;
}

.signatureArea div
{
    padding-left: 60px;
}







Thanks,
Posted
Comments
rahulkasar 9-Jan-13 5:38am    
Please send some other solution also to create an asp.net control to sign for Ipad

This control will definitely useful for you. I have personally used this for few of my project.

http://thomasjbradley.ca/lab/signature-pad/[^]
 
Share this answer
 
It will not work on ipad because it used a swf component which is flash...Ipads do not support flash
 
Share this answer
 

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900