Foros del Web » Programando para Internet » Javascript »

Asignar varios eventos a un elemento html

Estas en el tema de Asignar varios eventos a un elemento html en el foro de Javascript en Foros del Web. Normalmente lo que se hace es: @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código HTML: Ver original < button type = "button" onclick = "return funcion()" > Boton < / ...
  #1 (permalink)  
Antiguo 26/07/2012, 16:46
 
Fecha de Ingreso: octubre-2011
Mensajes: 58
Antigüedad: 12 años, 7 meses
Puntos: 0
Asignar varios eventos a un elemento html

Normalmente lo que se hace es:
Código HTML:
Ver original
  1. <button type="button" onclick="return funcion()">Boton </button>

Pero si hago lo siguiente:
Código HTML:
Ver original
  1. <button type="button" onclick="return funcion1(); return funcion2();">Boton </button>

No funciona.

Lo que pasa es que tengo varios inputs en lo que me gustaria limitar, el numero de caracteres que se escriba y tambien el tipo de caracteres (si son letras o numeros). Hay algunos inputs en los que es necesario validar ambas cosas, en otros no, por eso son dos funciones diferentes.

¿Cómo podría hacerlo?

Intenté el el método attachEvento, pero tampoco funciona:
Código Javascript:
Ver original
  1. input.attachEvent("onkeypress", soloLetras(event, this, 'numero'));

Código Javascript:
Ver original
  1. input.attachEvent("onkeypress", new function() {
  2. return soloLetras(event, this, 'numero')
  3. });

Código Javascript:
Ver original
  1. input.attachEvent("onkeypress", return new function() {
  2. soloLetras(event, this, 'numero')
  3. });

Ninguno funcionan.
__________________
La libertad más difícil de conservar es la de equivocarse. - Morris Wes

Lo que faltaba en internet: http://binar10s.blogspot.com/
  #2 (permalink)  
Antiguo 26/07/2012, 16:52
 
Fecha de Ingreso: julio-2011
Mensajes: 220
Antigüedad: 12 años, 9 meses
Puntos: 72
Respuesta: Asignar varios eventos a un elemento html

¿No te serviría utilizar una tercera función que llamara a las otras dos? Algo así.

<script>
function funcion01()
{
...
}

function funcion02()
{
...
}

function funcion03()
{
funcion01();
funcion02();
}
</script>

<input type="button" onclick="funcion03()" />
  #3 (permalink)  
Antiguo 26/07/2012, 17:01
 
Fecha de Ingreso: octubre-2011
Mensajes: 58
Antigüedad: 12 años, 7 meses
Puntos: 0
Respuesta: Asignar varios eventos a un elemento html

Si, esa era la solución alternativa, pero quería saber si había una forma "legal" o sea una forma provista por los mismos lenguajes.
__________________
La libertad más difícil de conservar es la de equivocarse. - Morris Wes

Lo que faltaba en internet: http://binar10s.blogspot.com/
  #4 (permalink)  
Antiguo 26/07/2012, 17:03
Avatar de Dradi7  
Fecha de Ingreso: junio-2008
Ubicación: Peru - Lima
Mensajes: 1.518
Antigüedad: 15 años, 10 meses
Puntos: 220
Respuesta: Asignar varios eventos a un elemento html

No entiendo a que te refieres con provista los mismos lenguajes (PHP, ASPX, JAVA) y en cuanto a validar la longitud de caracteres no puedes usar la propiedad maxlenght del HTMLElement.
__________________
La clave de todo triunfador es eliminar todas sus excusas y sus limitaciones
  #5 (permalink)  
Antiguo 26/07/2012, 17:22
 
Fecha de Ingreso: octubre-2011
Mensajes: 58
Antigüedad: 12 años, 7 meses
Puntos: 0
Respuesta: Asignar varios eventos a un elemento html

Podria usar el maxlength, pero quiero dar un mensaje cuando ya no se pueda seguir escribiendo, y no veo como pueda hacer eso con maxlength.

Volviendo al problema, tengo un error al llamar las dos funciones. Me dice que una de la funciones que estoy llamando no es una funcion

Asi es como lo estoy haciendo.

Código Javascript:
Ver original
  1. function detener(txt, cantidad) {
  2.     // alert(txt.value.length);
  3.     retorno = true;
  4.     if(txt.value.length >= cantidad) {
  5.         retorno = false;
  6.     }
  7.    
  8.     return retorno;
  9. }

Código Javascript:
Ver original
  1. function soloLetras(elEvento, objeto, tipo)
  2. {
  3.     permite = true;
  4.    
  5.     letras = "abcdefghijklmnñopqrstuvwxyz ";
  6.     numeros = "0123456789";
  7.     especiales = [ "8", "9", "39", "37"]
  8.  
  9.     evento = elEvento;
  10.    
  11.     caracter = String.fromCharCode(evento.charCode);
  12. . ..
  13. ..
  14. ..
  15. ..
  16. }

Código Javascript:
Ver original
  1. function detenerYsoloLetra(elEvento, objeto, tipoCaracter, cantidadCaracteres) {
  2.    
  3.     soloLetras = soloLetras(elEvento, objeto, tipoCaracter);
  4.     detener = detener(objeto, cantidadCaracteres);
  5.    
  6.     if(soloLetras && detener) {
  7.         return true;
  8.     }
  9.     else {
  10.         return false;
  11.     }
  12. }

El html
Código Javascript:
Ver original
  1. <input type="text" id="cedula" onkeypress="return detenerYsoloLetra(event, this, 'letra', 11)"/> <span class="requerido">*</span>

El error es:

Uncaught TypeError: Property 'soloLetras' of object [object Window] is not a function
__________________
La libertad más difícil de conservar es la de equivocarse. - Morris Wes

Lo que faltaba en internet: http://binar10s.blogspot.com/
  #6 (permalink)  
Antiguo 27/07/2012, 11:34
(Desactivado)
 
Fecha de Ingreso: noviembre-2002
Ubicación: Ciudad Autónoma de Buenos Aires
Mensajes: 2.367
Antigüedad: 21 años, 5 meses
Puntos: 317
Respuesta: Asignar varios eventos a un elemento html

Bueno, en los ejemplos que pusiste para probar seguro que da error, porque esos puntos de relleno no hacen nada para la función. Podías haber dejado algo listo para ver.

Hice un modelo muy simple, que llama a una función que es la que "valida" con otras dos (en realidad no validan nada, le puse unos checkbox para que se pudiese probar entre true y false y confirmé con alertas que recibieran los valores de la función original).

Funciona bien. O al menos eso parece. Si tienes un aviso en la consola debe ser por errores en las otras funciones.

Te dejo el demo para que lo verifiques.

Código:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
"http://www.w3c.org/TR/1999/REC-html401-19991224/loose.dtd">
<html>
<head>
<meta http-equiv=Content-Type content="text/html; charset=utf-8">

<script type="text/javascript">

function dobleFuncion(T,R,A){
alert(T.value+" "+R+" "+A)
var charly = delta(T,R);
var eco = foxtrot(T,A);
//alert(charly);
//alert(eco);
var golf = (charly==true && eco==true)? true : false;

//return golf;

alert("Es : "+ golf)
}

function delta(Td,Rd){
alert("En delta() : "+Td.value+" "+Rd)

var hotel = julieta.alfa.value == "1"? true:false;
alert("delta : "+ hotel +" ("+ Td.value +" "+ Rd +")");
return hotel;
}

function foxtrot(Tf,Rf){
alert("En foxtrot() : "+Tf.value+" "+Rf)

var indio = julieta.bravo.value == "1"? true:false;
alert("foxtrot : "+ indio +" ("+ Tf.value +" "+ Rf +")");
return indio;
}

</script>

</head>
<body>
<form name=julieta>
<p style=background-color:#ff9999 ><input type=checkbox value="0" name=alfa 
onchange="this.value=(this.checked)? '1':'0'"> ☑True / ☐False.</p>
<p style=background-color:#9999ff ><input type=checkbox value="0" name=bravo 
onchange="this.value=(this.checked)? '1':'0'"> ☑True / ☐False.</p>

<input type=button onclick='dobleFuncion(this,"rojo","azul")' value="Devuelve...">
</form>
</body>
</html>
Si el rojo y el azul están checkeados, devuelve true. De cualquier otra forma, devuelve false.

Etiquetas: elemento, eventos, funcion, html, input, botones
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 01:04.