none
Problemas Javascript en Control de usuario .ascx RRS feed

  • Pregunta

  • Hola a todos tengo un problemita con un javascript, quiero validar que cuando el usuario este ingresando datos en mis textbox no ingrese letras repetidas mas de tres veces, ya habia diseñado el mismo script pero lo uso desde la pagina no desde un control. Y lo que sucede es que no me funciona en el control no se que control poner en uno de los atributos para que me funcione.

    Les agradezco mucho su colaboracion y ayuda.

    PDT. el problema lo tengo en la funcion letrasRepetidas(e, campo) en la linea: var control = "ctl00_DefaultContent_" + campo;.
    Lo que creo que pase es que no encuentre el defaultcontento algo asi no se que pueda ser, gracias por su colaboracion. Disculpen haber posteado todo ese codigo pero puede servir de mucho.


    de nuevo gracias.


    <%@ Control Language="VB" AutoEventWireup="false" CodeFile="ctlHallazgos.ascx.vb" Inherits="Controles_ctlHallazgos" %>
    <table style="width:700px" id="TablaContenedora">
        <tr id="Fila1" visible="true" runat="server">
            <td align="left" style="background-color: #fdf5f2; width: 200px;">
                <asp:Label ID="Label1" runat="server" SkinID="skinLabelObligatorio" Text="*"></asp:Label>
                <asp:Label ID="lblFila1" runat="server" Text="Label1" SkinID="skinLabelSubtitulo"></asp:Label>
                <asp:RequiredFieldValidator ID="rfvFila1" runat="server" ControlToValidate="txtFila1"
                    Display="None" SetFocusOnError="True">*</asp:RequiredFieldValidator>
                <asp:RegularExpressionValidator ID="revFila1" runat="server" ControlToValidate="txtFila1"
                    Display="None" SetFocusOnError="True" ValidationExpression="[A-Za-z\s\d\xA1\xA6\xA9\xAE\xBF\xF1\xD1\xC1\xC9\xCD\xD3\xDA\xE1\xE9\xED\xF3\xF7\xFA\xFC\x40\x22\x2C\x2D\x2E]{5,150}">*</asp:RegularExpressionValidator></td>
            <td style="background-color: #f4f5f9; width: 500px;" align="left">
                <asp:TextBox ID="txtFila1" runat="server" SkinID="skinTextBoxContenido" Width="500px" onkeypress="return letrasRepetidas(event, 'txtFila1')"></asp:TextBox>
            </td>
            
            
        </tr>
        <tr >
            <td align="left" style="background-color: #fdf5f2; width: 200px;">
                <asp:Label ID="Label2" runat="server" SkinID="skinLabelObligatorio" Text="*"></asp:Label>
                <asp:Label ID="lblFila2" runat="server" Text="Label2" SkinID="skinLabelSubtitulo"></asp:Label>
                <asp:RequiredFieldValidator ID="rfvFila2" runat="server" ControlToValidate="txtFila2"
                    Display="None" SetFocusOnError="True">*</asp:RequiredFieldValidator>
                <asp:RegularExpressionValidator ID="revFila2" runat="server" ControlToValidate="txtFila2"
                    Display="None" SetFocusOnError="True" ValidationExpression="[A-Za-z\s\d\xA1\xA6\xA9\xAE\xBF\xF1\xD1\xC1\xC9\xCD\xD3\xDA\xE1\xE9\xED\xF3\xF7\xFA\xFC\x40\x22\x2C\x2D\x2E]{5,150}">*</asp:RegularExpressionValidator></td>
            <td style="background-color: #f4f5f9; width: 500px;" align="left">
                <asp:TextBox ID="txtFila2" runat="server" SkinID="skinTextBoxContenido" Width="500px" onkeypress="return letrasRepetidas(event, 'txtFila2')"></asp:TextBox>
            </td>
        </tr>
        <tr id="Fila3" visible="true" runat="server">
            <td align="left" style="background-color: #fdf5f2; width: 200px;">
                <asp:Label ID="Label3" runat="server" SkinID="skinLabelObligatorio" Text="*"></asp:Label>
                <asp:Label ID="lblFila3" runat="server" Text="Label3" SkinID="skinLabelSubtitulo"></asp:Label>
                <asp:RequiredFieldValidator ID="rfvFila3" runat="server" ControlToValidate="txtFila3"
                    Display="None" SetFocusOnError="True">*</asp:RequiredFieldValidator>
                <asp:RegularExpressionValidator ID="revFila3" runat="server" ControlToValidate="txtFila3"
                    Display="None" SetFocusOnError="True" ValidationExpression="[A-Za-z\s\d\xA1\xA6\xA9\xAE\xBF\xF1\xD1\xC1\xC9\xCD\xD3\xDA\xE1\xE9\xED\xF3\xF7\xFA\xFC\x40\x22\x2C\x2D\x2E]{5,150}">*</asp:RegularExpressionValidator></td>
            <td style="background-color: #f4f5f9; width: 500px;" align="left">
                <asp:TextBox ID="txtFila3" runat="server" SkinID="skinTextBoxContenido" Width="500px" onkeypress="return letrasRepetidas(event, 'txtFila3')"></asp:TextBox>
            </td>
        </tr>
        <tr id="Fila4" visible="false" runat="server">
            <td align="left" style="background-color: #fdf5f2; width: 200px;">
                <asp:Label ID="Label4" runat="server" SkinID="skinLabelObligatorio" Text="*"></asp:Label>
                <asp:Label ID="lblFila4" runat="server" Text="Label4" SkinID="skinLabelSubtitulo"></asp:Label>
                <asp:RequiredFieldValidator ID="rfvFila4" runat="server" ControlToValidate="txtFila4"
                    Display="None" SetFocusOnError="True">*</asp:RequiredFieldValidator>
                <asp:RegularExpressionValidator ID="revFila4" runat="server" ControlToValidate="txtFila4"
                    Display="None" SetFocusOnError="True" ValidationExpression="[A-Za-z\s\d\xA1\xA6\xA9\xAE\xBF\xF1\xD1\xC1\xC9\xCD\xD3\xDA\xE1\xE9\xED\xF3\xF7\xFA\xFC\x40\x22\x2C\x2D\x2E]{5,150}">*</asp:RegularExpressionValidator></td>
            <td style="background-color: #f4f5f9; width: 500px;" align="left">
                <asp:TextBox ID="txtFila4" runat="server" SkinID="skinTextBoxContenido" Width="500px" onkeypress="return letrasRepetidas(event, 'txtFila4')"></asp:TextBox>
            </td>
        </tr>
        <tr id="Fila5" visible="false" runat="server">
            <td align="left" style="background-color: #fdf5f2; width: 200px;">
                <asp:Label ID="Label5" runat="server" SkinID="skinLabelObligatorio" Text="*"></asp:Label>
                <asp:Label ID="lblFila5" runat="server" Text="Label5" SkinID="skinLabelSubtitulo"></asp:Label>
                <asp:RequiredFieldValidator ID="rfvFila5" runat="server" ControlToValidate="txtFila5"
                    Display="None" SetFocusOnError="True">*</asp:RequiredFieldValidator>
                <asp:RegularExpressionValidator ID="revFila5" runat="server" ControlToValidate="txtFila5"
                    Display="None" SetFocusOnError="True" ValidationExpression="[A-Za-z\s\d\xA1\xA6\xA9\xAE\xBF\xF1\xD1\xC1\xC9\xCD\xD3\xDA\xE1\xE9\xED\xF3\xF7\xFA\xFC\x40\x22\x2C\x2D\x2E]{5,150}">*</asp:RegularExpressionValidator></td>
            <td style="background-color: #f4f5f9; width: 500px;" align="left">
                <asp:TextBox ID="txtFila5" runat="server" SkinID="skinTextBoxContenido" Width="500px" onkeypress="return letrasRepetidas(event, 'txtFila5')"></asp:TextBox>
            </td>
        </tr>
    </table>
    <script language="javascript" type="text/javascript">
            function campoLong(campo, maximo, mayuscula)
            {
            var largo
            var control = "ctl00_DefaultContent_"+campo;
            largo = document.getElementById(control).value.length;
            
            if (largo > maximo)
                document.getElementById(control).value = document.getElementById(control).value.substring(0,maximo);
                
            var str=document.getElementById(control).value;     
            if (mayuscula == 1)
               document.getElementById(control).value=str.toUpperCase();
            }
            
            function letrasRepetidas(e, campo)
            {
            var control = "ctl00_DefaultContent_" + campo;
            var maximo = document.getElementById(control).value.length;
            var letra1 = document.getElementById(control).value.substring(maximo-1, maximo);
            var letra2 = document.getElementById(control).value.substring(maximo-2, maximo-1);
            var letraPresionada = String.fromCharCode(window.event.keyCode)
            
            if (letra1 == "")
                letra1 = "?";
            
            if (letra2 == "")
                letra2 = "¿";
            
            if ((letra1 == letraPresionada && letra2 == letra1) || (e.keyCode==118 && e.ctrlKey))
                event.returnValue = false;
            else
                event.returnValue = true;
            
           }
           document.oncontextmenu = function(){return false}
           
        </script>

    jin
    viernes, 12 de junio de 2009 18:03

Respuestas

  • hola,

    lo que podrias hacer es reemplazar el parametro del campo por lo siguiente:

    <%=txtFila4.ClientID%>

    o sea quedaria algo asi:

    <asp:TextBox ID="txtFila4" runat="server" SkinID="skinTextBoxContenido" Width="500px" onkeypress="return letrasRepetidas(event, '<%=txtFila4.ClientID%>')"></asp:TextBox>

    por supuesto tu javascript ya no necesitaria resolver el control ya que se lo estarias pasando:


    function letrasRepetidas(e, campo)
    {
        var control = document.getElementById(campo);

        var maximo = control.value.length;
        var letra1 = control.value.substring(maximo-1, maximo);
        var letra2 = control.value.substring(maximo-2, maximo-1);
        var letraPresionada = String.fromCharCode(window.event.keyCode)

        if (letra1 == "")
            letra1 = "?";

        if (letra2 == "")
            letra2 = "¿";

        if ((letra1 == letraPresionada && letra2 == letra1) || (e.keyCode==118 && e.ctrlKey))
            event.returnValue = false;
        else
            event.returnValue = true;

    }



    por ahi el mismo concepto puedes aplicarlo a "campoLong"

    saludos
    Leandro Tuttini

    Work: Iceberg Solutions
    Blog
    Buenos Aires
    Argentina
    • Marcado como respuesta jorgek miércoles, 1 de julio de 2009 17:17
    domingo, 14 de junio de 2009 16:53