none
invocar funciones javascript que estan dentro de un archivo .js RRS feed

  • Pregunta

  • hola :

    tengo un archivo .js en el cual tengo estas dos funciones javascript 

    function isNumber(evt) {
        evt = (evt) ? evt : window.event;
        var charCode = (evt.which) ? evt.which : evt.keyCode;
        if (charCode > 31 && (charCode < 48 || charCode > 57)) {
            alert( "Solo puede ingresar numeros " )
            return false;
        }
        return true;
    }

    function isCharacter(evt) {

        var charCode = (evt.which) ? evt.which : event.keyCode;

        if ((charCode > 65 && charCode < 91) || (charCode > 97 && charCode < 123)) {

            return true;
        }
        alert("Solo puede ingresar caracteres no numericos ")

        return false;

    }

    el problema que estoy teniendo es que solamente funciona la primera . 

    la segunda funcion , si la pongo directamente en el codigo html del webform en donde tengo el textbox que necesito validar solo caracteres me funciona perfecto . la pregunta es : en un archivo .js puedo poner mas de una funcion ?  hay alguna sintaxis especial en el caso que sea mas de una funcion dentro del archivo .js para que tome todas las funciones ? gracias 


    • Editado ciclon25 martes, 10 de enero de 2017 0:15
    martes, 10 de enero de 2017 0:14

Respuestas

  • Hola ,algo que no indicaste es como finalmente llamas al  js en tu página 

    he probado estas fórmulas y funcionan en google chrome e internet explorer

    function sololetras(evt) {
    
        var charCode = (evt.which) ? evt.which : evt.keyCode;
    
        if ((charCode > 65 && charCode < 91) || (charCode > 97 && charCode < 123))
    
            return true;
    
        return false;
    }
    
    function solonumeros(evt) {
    
        var charCode = (evt.which) ? evt.which : evt.keyCode;
    
        if ((charCode > 47 && charCode < 58) || charCode == 46)
    
    
            return true;
    
        return false;
    
    }

    los puse en un .js llamado Prueba, asi lo llamo desde mi formulario que esta en la misma ruta que la carpeta Scripts,

    <head runat="server">
     <script src="Scripts/Prueba.js" type="text/javascript"></script>
      <title></title>
    </head>

    por último así llamo al evento desde el textbox

      <div>
         <asp:TextBox ID="txtNombre" onkeypress="return sololetras(event)" runat="server"></asp:TextBox>
        </div>

    Nota que uso event y no evt que al parecer no es soportado por algnos navegadores.


    Si la respuesta te fue útil vótala como tal,y si fue respuesta márcala. Solo dejo en el foro mis post si fueron útiles , de lo contrario y por mantener el orden los borro. Saludos. Lima-Perú.

    • Marcado como respuesta ciclon25 miércoles, 11 de enero de 2017 17:40
    miércoles, 11 de enero de 2017 4:17
  • holla : 

    gracias x la ayuda . les comento : cambie el parametro evt por event y logre que anden las dos funciones en el archivo .js . Lo hice usando el navegador firefox ,usando chrome sigue sin andar la funcion solocaracteres

     . gracias 

    • Marcado como respuesta ciclon25 jueves, 12 de enero de 2017 0:38
    jueves, 12 de enero de 2017 0:38

Todas las respuestas

  • hola

    >>en un archivo .js puedo poner mas de una funcion ?

    claro que si

    >>hay alguna sintaxis especial en el caso que sea mas de una funcion dentro del archivo .js para que tome todas las funciones ?

    no, tal como lo defines es correcto

    Define la funcion desde el .js y usa la Developer Tools del browser (al cual accedes con F12) para ver desde la solapa console si hay un error en javascript cuando la invocas

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    martes, 10 de enero de 2017 7:44
  • Normalmente sí que debería funcionar correctamente si pones varias funciones en el .js. Pero si alguna de ellas tiene un error de sintaxis, puede ser que se haga un lío y no entienda bien lo que viene a continuación. Por ejemplo, veo que tienes un alert que no termina en punto y coma; aunque en js el punto y coma puede omitirse en algunos casos, soy partidario de no correr riesgos y ponerlo siempre para mayor seguridad. Aparte de eso, puede ser que el código tenga algún otro error, revísalo con el debugger.
    martes, 10 de enero de 2017 7:52
  • gracias por las rtas .

    pregunto :  si hubiese un error de sintaxis tampoco tendria que ejecutarla desde el codigo html del webform ? de ahi se ejecuta perfecto 

    martes, 10 de enero de 2017 12:28
  • Depende de como lo pongas en la pagina. Por ejemplo, si en el .js hay un error en la primera funcion puede que no te reconozca la segunda, pero si en la pagina metes las dos funciones en dos bloques de script, el tag que limita el bloque tambien limita la propagacion del error. Y (aunque no es este tu caso) otra cosa que puede funcionar en una pagina html y fallar en un js es el orden en el que se incluyen las referencias cuando usas varias librerias. Y otra (que tampoco es tu caso) es la inclusion de llamadas a asp.net tales como <%=...%>, que funcionan en la pagina pero no el js.
    martes, 10 de enero de 2017 13:01
  • hola

    >>si hubiese un error de sintaxis tampoco tendria que ejecutarla desde el codigo html del webform ?

    pero puede confirmar que existe un error ? lo validaste desde la consola del developer tools

    puede que sea un error en tiempo de ejecucion, por lo tanto solo suceda cuando invocas a esa funcion


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina


    martes, 10 de enero de 2017 14:17
  • Hola,

    Es mi idea o te falto el ; en el alert("Solo puede ingresar caracteres no numericos ")

    Saludos.,

    martes, 10 de enero de 2017 14:30
  • es verdad que falta el punto y coma en los alert(), pero en la funcion isNumber() tampoco lo define y entiendo esta funciona

    lo mas seguro para entender que pasa es validar la consola de la developer tools

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    martes, 10 de enero de 2017 15:00
  • hice el seguimiento con la tecla F12
    al tipear en el tetxbox 
    sale este error:

    recaudacion2.aspx:73 Uncaught ReferenceError: isCharacter is not defined


    at HTMLInputElement.onkeypress (recaudacion2.aspx:73)

    reviso como tengo asignado en la vista codigo del webform el evento :

     <p>

    <asp:TextBox ID="Txtimp" runat="server" onkeypress="return isNumber(event)" 

    style="z-index: 1; left: 689px;  top: 246px; " 

    height="16px" width="128px" 

    OnTextChanged="Txtimp_TextChanged">0</asp:TextBox>

    <asp:TextBox ID="Txtcod" runat="server" onkeypress="return isCharacter

    (event)" style="z-index: 1; left: 689px; top: 209px; ; 

    bottom: 320px;" height="16px" width="128px" 

    OnTextChanged="Txtcod_TextChanged">""</asp:TextBox>
    </p>

    no veo diferencias con el que si funciona ( la funcion isNumber )
    gracias por la ayuda 

                                
    • Marcado como respuesta ciclon25 miércoles, 11 de enero de 2017 17:40
    • Desmarcado como respuesta Joyce_ACModerator jueves, 12 de enero de 2017 15:35
    miércoles, 11 de enero de 2017 0:44
  • Hola ,algo que no indicaste es como finalmente llamas al  js en tu página 

    he probado estas fórmulas y funcionan en google chrome e internet explorer

    function sololetras(evt) {
    
        var charCode = (evt.which) ? evt.which : evt.keyCode;
    
        if ((charCode > 65 && charCode < 91) || (charCode > 97 && charCode < 123))
    
            return true;
    
        return false;
    }
    
    function solonumeros(evt) {
    
        var charCode = (evt.which) ? evt.which : evt.keyCode;
    
        if ((charCode > 47 && charCode < 58) || charCode == 46)
    
    
            return true;
    
        return false;
    
    }

    los puse en un .js llamado Prueba, asi lo llamo desde mi formulario que esta en la misma ruta que la carpeta Scripts,

    <head runat="server">
     <script src="Scripts/Prueba.js" type="text/javascript"></script>
      <title></title>
    </head>

    por último así llamo al evento desde el textbox

      <div>
         <asp:TextBox ID="txtNombre" onkeypress="return sololetras(event)" runat="server"></asp:TextBox>
        </div>

    Nota que uso event y no evt que al parecer no es soportado por algnos navegadores.


    Si la respuesta te fue útil vótala como tal,y si fue respuesta márcala. Solo dejo en el foro mis post si fueron útiles , de lo contrario y por mantener el orden los borro. Saludos. Lima-Perú.

    • Marcado como respuesta ciclon25 miércoles, 11 de enero de 2017 17:40
    miércoles, 11 de enero de 2017 4:17
  • gracias , voy a probar con otro navegador ( uso el chrome ) , ademas del resto de lo sugerido . dsps les digo como anduvo 
    miércoles, 11 de enero de 2017 17:38
  • gracias , voy a probar con otro navegador ( uso el chrome ) , ademas del resto de lo sugerido . dsps les digo como anduvo 
    Hola, me alegro que parte del problema se haya resuelto sería bueno que postearas el código de como llamas al .js en tu formulario web.

    Si la respuesta te fue útil vótala como tal,y si fue respuesta márcala. Solo dejo en el foro mis post si fueron útiles , de lo contrario y por mantener el orden los borro. Saludos. Lima-Perú.

    miércoles, 11 de enero de 2017 17:45
  • holla : 

    gracias x la ayuda . les comento : cambie el parametro evt por event y logre que anden las dos funciones en el archivo .js . Lo hice usando el navegador firefox ,usando chrome sigue sin andar la funcion solocaracteres

     . gracias 

    • Marcado como respuesta ciclon25 jueves, 12 de enero de 2017 0:38
    jueves, 12 de enero de 2017 0:38
  • holla : 

    gracias x la ayuda . les comento : cambie el parametro evt por event y logre que anden las dos funciones en el archivo .js . Lo hice usando el navegador firefox ,usando chrome sigue sin andar la funcion solocaracteres

     . gracias 

    aún no comentas como referencias al archivo .js en tu página.

    Si la respuesta te fue útil vótala como tal,y si fue respuesta márcala. Solo dejo en el foro mis post si fueron útiles , de lo contrario y por mantener el orden los borro. Saludos. Lima-Perú.

    jueves, 12 de enero de 2017 1:33
  • si , perdon me falto eso :

    con esta linea referencio  al archivo .js

     <script src="/java_scripts/funciones.js"></script>

    y el contenido dell archivo funciones.js es :

    function isCharacter(event) {

        var charCode = (event.which) ? event.which : event.keyCode;

        if ((charCode > 65 && charCode < 91) || (charCode > 97 && charCode < 123)) {

            return true;
        }
        alert("Solo puede ingresar caracteres no numericos ");

        return false;

    }
    function isNumber(event) {
        event = (event) ? event : window.event;
        var charCode = (event.which) ? event.which : event.keyCode;
        if (charCode > 31 && (charCode < 48 || charCode > 57)) {
            alert("Solo puede ingresar numeros enteros");
            return false;
        }
        return true;
    }

    viernes, 13 de enero de 2017 1:19