quarta-feira, 26 de fevereiro de 2014

WebForm - Registros Duplicados ao dar Duplo Click em um Botão Salvar


Em algumas ocasiões pode acontecer que após o usuário preencher todo o formulário e clica no botão Salvar o registro é duplicado na tabela. Em alguns casos nem a propriedade Enabled resolve este problema.
Neste caso, o código abaixo pode ser de ajuda.
protected void Page_Load(object sender, EventArgs e)
{
        DesabilitarBotao(this.Page, Salvar);
}
protected void Salvar_Click(object sender, EventArgs e)
{
        for (int i = 0; i < 1000000; i++)
        {
             TextBox txtBox = new TextBox();
             txtBox.Text = "we " + i;
         }
}
public static void DesabilitarBotao(Page paginaAtual, Button botao)
{
        botao.Attributes.Add("onclick", paginaAtual.ClientScript.GetPostBackEventReference(botao, "") + ";this.value='Aguarde...';this.disabled = true;");
}
O comando for foi utilizado apenas para efeito de teste.

Máscara de Telefone com 9 dígitos em JavaScript


Este exemplo mostra como implementar uma função JavaScript para adicionar mais um dígito ao número de telefone.

 

<html>

<head>

    <title>Máscara de Telefone com 9 dígitos em JavaScript</title>

<script type="text/javascript">

/* Máscaras ER */

function mascaraTel(o, f) {

    v_obj = o;

    v_fun = f;

    setTimeout(execmascara, 1);

}

function execmascara() {

    v_obj.value = v_fun(v_obj.value)

}

function mtel(v) {

    v=v.replace(/\D/g,"");

    v=v.replace(/^(\d{2})(\d)/g,"($1) $2");

    v=v.replace(/(\d)(\d{4})$/,"$1-$2");

    return v;

}

function id(el) {

          return document.getElementById(el);

}

window.onload = function() {

          var $telefone = id('mascaraTel');

          $telefone.onkeyup = function() {

                    mascaraTel( this, mtel );

          }

          $telefone.onblur = function() {

                    var v = this.value;

                    if( v.indexOf('(11)') !== -1 && v.length === 14) {

                              this.value = v.replace(/\((\d{2})\) (\d{4})-(\d{4})/g,'($1) 9$2-$3');

                    }

          }

}

</script>

 

</head>

<body>

          <h1 style="color:#FF9933">Máscara de Telefone com 9 dígitos em JavaScript</h1>

    <label type="text" style="font-family:Verdana,Arial;" >Telefone</label>

    <input type="text" name="mascaraTel" id="mascaraTel" maxlength="15" />

 

</body>

</html>

Mascara e Validação utilizando JavaScript


Os exemplos abaixo mostram como criar máscaras para campos dos tipos:

·        CNPJ;

·        CPF;

·        CEP;

·        Data;

·        Telefone;

 

Os campos de CNPJ e CPF realizam a verificação de tais campos para verificar se são documentos válidos

 

<script language="javascript" type="text/javascript">

   

    //Máscara de CNPJ

    function MascaraCNPJ(cnpj) {

        if (mascaraInteiro(cnpj) == false) {

            event.returnValue = false;                

        }

        return formataCampo(cnpj, '00.000.000/0000-00', event);

    }

 

    //Máscara ao CPF

    function MascaraCPF(cpf) {

        if (mascaraInteiro(cpf) == false) {

            event.returnValue = false;

        }

        return formataCampo(cpf, '000.000.000-00', event);

    }

 

    //Máscara de CEP

    function MascaraCep(cep) {

        if (mascaraInteiro(cep) == false) {

            event.returnValue = false;

        }

        return formataCampo(cep, '00.000-000', event);

    }

 

    //Máscara de Data

    function MascaraData(data) {

        if (mascaraInteiro(data) == false) {

            event.returnValue = false;

        }

        return formataCampo(data, '00/00/0000', event);

    }

 

    //Máscara ao Telefone (9 digitos)

    function MascaraTelefone(tel) {

        if (mascaraInteiro(tel) == false) {

            event.returnValue = false;

        }

        return formataCampo(tel, '(00) 0000-0000', event);

    }

   

    //validar CNPJ

    function ValidarCNPJ(ObjCnpj) {

        var cnpj = ObjCnpj.value;

        var valida = new Array(6, 5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2);

        var dig1 = new Number;

        var dig2 = new Number;

 

        exp = /\.|\-|\//g

        cnpj = cnpj.toString().replace(exp, "");

        var digito = new Number(eval(cnpj.charAt(12) + cnpj.charAt(13)));

 

        for (i = 0; i < valida.length; i++) {

            dig1 += (i > 0 ? (cnpj.charAt(i - 1) * valida[i]) : 0);

            dig2 += cnpj.charAt(i) * valida[i];

        }

        dig1 = (((dig1 % 11) < 2) ? 0 : (11 - (dig1 % 11)));

        dig2 = (((dig2 % 11) < 2) ? 0 : (11 - (dig2 % 11)));

 

        if (((dig1 * 10) + dig2) != digito) {

            alert('CNPJ Invalido!');           

        }

    }

 

    //Validar CPF

    function ValidarCPF(Objcpf) {

        var cpf = Objcpf.value;

        exp = /\.|\-/g

        cpf = cpf.toString().replace(exp, "");

        var digitoDigitado = eval(cpf.charAt(9) + cpf.charAt(10));

        var soma1 = 0, soma2 = 0;

        var vlr = 11;

 

        for (i = 0; i < 9; i++) {

            soma1 += eval(cpf.charAt(i) * (vlr - 1));

            soma2 += eval(cpf.charAt(i) * vlr);

            vlr--;

        }

        soma1 = (((soma1 * 10) % 11) == 10 ? 0 : ((soma1 * 10) % 11));

        soma2 = (((soma2 + (2 * soma1)) * 10) % 11);

 

        var digitoGerado = (soma1 * 10) + soma2;

        if (digitoGerado != digitoDigitado) {

            alert('CPF Invalido!');           

        }

    }

 

    //Validar CEP

    function ValidaCep(cep) {

        exp = /\d{2}\.\d{3}\-\d{3}/

        if (!exp.test(cep.value)) {

            alert('Cep Invalido!');           

        }

    }

 

    //Validar data

    function ValidaData(data) {

        exp = /\d{2}\/\d{2}\/\d{4}/

        if (!exp.test(data.value)) {

            alert('Data Invalida!');

        }

    }

 

    //Validar Telefone

    function ValidaTelefone(tel) {

        exp = /\(\d{2}\)\ \d{4}\-\d{4}/

        if (!exp.test(tel.value)) {

            alert('Telefone Invalido!');           

        }

    }

 

    //Validar número inteiro com mascara

    function mascaraInteiro() {

        if (event.keyCode < 48 || event.keyCode > 57) {

            event.returnValue = false;

            return false;

        }

        return true;

    }

  

    //formatar os campos

    function formataCampo(campo, Mascara, evento) {

        var boleanoMascara;

 

        var Digitato = evento.keyCode;

        exp = /\-|\.|\/|\(|\)| /g

        campoSoNumeros = campo.value.toString().replace(exp, "");

 

        var posicaoCampo = 0;

        var NovoValorCampo = "";

        var TamanhoMascara = campoSoNumeros.length; ;

 

        if (Digitato != 8) { // backspace

            for (i = 0; i <= TamanhoMascara; i++) {

                boleanoMascara = ((Mascara.charAt(i) == "-") || (Mascara.charAt(i) == ".")

                                                                               || (Mascara.charAt(i) == "/"))

                boleanoMascara = boleanoMascara || ((Mascara.charAt(i) == "(")

                                                                               || (Mascara.charAt(i) == ")") || (Mascara.charAt(i) == " "))

                if (boleanoMascara) {

                    NovoValorCampo += Mascara.charAt(i);

                    TamanhoMascara++;

                } else {

                    NovoValorCampo += campoSoNumeros.charAt(posicaoCampo);

                    posicaoCampo++;

                }

            }

            campo.value = NovoValorCampo;

            return true;

        } else {

            return true;

        }

    }

</script>

 

 

<h1 style="color:#FF9933">Máscara e validações com JavaScript</h1>

<label type="text" style="font-family:Verdana,Arial;" >CNPJ</label>

<input type="text" name="cnpj" onKeyPress="MascaraCNPJ(form1.cnpj);" maxlength="18" onBlur="ValidarCNPJ(form1.cnpj);">

<p></p>

<label type="text" style="font-family:Verdana,Arial">CPF</label>

<input type="text" name="cpf" onBlur="ValidarCPF(form1.cpf);" onKeyPress="MascaraCPF(form1.cpf);" maxlength="14">

<p></p>

<label type="text" style="font-family:Verdana,Arial">CEP</label>

<input type="text" name="cep" onKeyPress="MascaraCep(form1.cep);" maxlength="10" onBlur="ValidaCep(form1.cep)">

<p></p>

<label type="text" style="font-family:Verdana,Arial">Data</label>   

<input type="text" name="data" onKeyPress="MascaraData(form1.data);" maxlength="10" onBlur= "ValidaDataform1.data);">

<p></p>

<label type="text" style="font-family:Verdana,Arial">Telefone</label>   

<input type="text" name="tel" onKeyPress="MascaraTelefone(form1.tel);" maxlength="14"  onBlur="ValidaTelefone(form1.tel);">