Principales respuestas
invocar funciones javascript que estan dentro de un archivo .js

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
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
-
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
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 -
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.
- Propuesto como respuesta Joyce_ACModerator martes, 10 de enero de 2017 15:40
-
-
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.
-
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- Editado Leandro TuttiniMVP martes, 10 de enero de 2017 14:18
-
-
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 -
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
-
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
-
-
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ú.
-
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
-
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
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ú.
-
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;
}