Foros del Web » Programando para Internet » Javascript »

No me detecta teclas segun codigo ASCII

Estas en el tema de No me detecta teclas segun codigo ASCII en el foro de Javascript en Foros del Web. Hola tengo esta funcion que me controla que caracteres puedo usar en cada cuadro de texto, el tema que no me detecta la tecla TAB ...
  #1 (permalink)  
Antiguo 20/07/2010, 06:58
 
Fecha de Ingreso: enero-2010
Mensajes: 128
Antigüedad: 14 años, 10 meses
Puntos: 2
No me detecta teclas segun codigo ASCII

Hola tengo esta funcion que me controla que caracteres puedo usar en cada cuadro de texto, el tema que no me detecta la tecla TAB ni suprimir (DEL). Cuando le digo al firefox que me devuelva el codigo ASCII, me aparece "Undefined" (on definido),

Les dejo el codigo de la funcion y el HTML para que vean la llamada a la funcion.

Código:
function evaluar(e, valor){
//Parametro: -> e -> Evento.
//Parametro: -> valor -> me indica si debo evaluar texto, numeros o texto y numeros.
	

	var keynum
	var keychar
	var numcheck
	var char_car_num
	
	//car = caracter.
	//num = numeros.
	//carnum = caracteres y numeros.
	
	if(window.event){// IE
		keynum = e.keyCode //Devuelve el codigo ASCII
		
	}else if(e.which){ // Netscape/Firefox/Opera
		//alert ("entre al if")		
		keynum = e.which //Devuelve el codigo ASCII	
	}	
	
	// 8 = BackSpace, 9 = TAB, 127 = Supr (DEL), XX = flecha izquierda, XX = flecha derecha, 32 = espacio

	if ((keynum==8) || (keynum==127) || (keynum==32) || (keynum==9)){	
		return 0;
	}else{			
		if (valor=='car'){		
			keychar = String.fromCharCode(keynum)	
			charcheck=/[a-zA-Z]/ //Solo letras MAYUSCULAS y minusculas.			
			return charcheck.test(keychar)
		}else if(valor=='num'){		
			keychar = String.fromCharCode(keynum)	
			numcheck=/[0-9]/ //Solo numeros.			
			//numcheck = /\d/       // \d   -> Expresion regular para asegurarse que sea un numero.
			return numcheck.test(keychar)	
		}else if(valor=='carnum'){		
			keychar = String.fromCharCode(keynum)	
			char_car_num=/[a-zA-Z0-9]/ //Cualquier alfanumérico.
			return char_car_num.test(keychar)	
		}else if(valor=='caresp'){		
			keychar = String.fromCharCode(keynum)	
			carespcheck=/[a-zA-Z0-9_.-]/ //Cualquier alfanumérico + cualquiera de estos tres _ . - (no el espacio) 
			return carespcheck.test(keychar)	
		}
	}
}//Cierra la funcion evaluar

Codigo html: (tiene algo en php pero no inside en el código)

Código:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Red</title>
<meta http-equiv="Content-Language" content="English" />
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<link rel="stylesheet" type="text/css" href="style.css" media="screen" />
<script type="text/javascript" src="js/funciones.js"></script>

<?php
include ('header.php');
include ('menu.php');
?>

</head>

<body>

<!--<div id=form align="center" border="1">-->

<div id="titulos_g">
	<h1><b>ALTA DE USUARIO</b></h1> <!-- <b> lo pone en negrita.-->
</div>
<br>
<div id="form_alta" class = "textos"> <h2>Datos personales </h2></div>
 <div id="content_form_alta">
<!--  
td=hace columnas
tr=hace filas
--> 
	<br>
	<!-- <td align="center" colspan="1"> -->
	<form name="usuario" id="id_usuario" action="b.html" method="POST"> <!-- //"p_alta_us.php" method="POST"> -->
	  <p>Nombre: 
		<input type="text" tabindex="1" name="nom_us" value="" id="nom" onkeypress="return evaluar(event, 'car')"/></p>
	  <p>Apellido: 
		<input type="text" tabindex="2" name="ape_us" value="" id="ape_us" onkeypress="return evaluar(event, 'car')"/></p>
	  <p>E-mail: 	
		  <input type="text" tabindex="3" name="email_us" value="" id="email_us"/></p>
	  
	 <table> <!--//border="1">-->
	  <tr>
	   <td colspan="2"> Tipo Doc: <SELECT tabindex="4" Name="tipodoc"> 
		 <?php
		 $tdoc_array=Array ("Elija", "DNI ","LE ","LC ");
		 If ($_SESSION['tipodoc'] ==''){
			$seleccionado= $tdoc_array[0];//elegir la posicion uno del array llamado tdoc
		 }else{
			$seleccionado=$_SESSION['tipodoc'];
		 }
		 foreach ($tdoc_array as $value)
			echo '<OPTION VALUE="'.$value.'" '.$seleccionado.'>'.$value.'</OPTION>'; /*Con esto puedo lograr que se 
			autocomplete el option value con el Arreglo tdoc_array.*/
		 ?>
	   </select></td>

	   <td><p>Número: 
		 <input type="text" tabindex="5" name="numdoc_us" value="" id="numdoc_us" onkeypress="return evaluar(event, 'num')"/></p></td>
	  </tr>	  	  
	 </table>

 </div> <!--Cierra <Div id="content_form_alta">-->
<div id="bottom_form_alta"></div>

<br><br><br><br><br>
<div id="form_alta" class="textos"> <h2>Datos de cuenta</h2></div>

<div id="content_form_alta">
  <p>Nick: <?php //falta corrobar el nick mientras se escribe ?>  
	  <input type="text" tabindex="6" name="nick_us" value="" id="nick_us" onkeypress="return evaluar(event, 'caresp')"/></p>		  
  <p>Clave: 	
	  <input type="pass" tabindex="7" name="pass_us" value="" id="pass_us" onkeypress="return evaluar(event, 'car')"/>
	  <td class="ayuda"><img src="images/ayuda.gif" alt="Ayuda" onmouseover="muestraAyuda(event, 'clave')"></td></p>
  <p>Repita la Clave: 	
	  <input type="pass" tabindex="8"name="repit_pass_us" value="" id="repit_pass_us" onkeypress="return evaluar(event, 'carnum')"/></p>	  
		
  <label>
	<td colspan="2" align="center"><input type="button" value="Enviar" onclick="valida_envia()"/></td> 	 
  </label>
	  
	</form>
 </div>
<div id="bottom_form_alta"></div>

<br><br><br><br><br>
</body>
</html>
  #2 (permalink)  
Antiguo 20/07/2010, 08:36
 
Fecha de Ingreso: enero-2008
Mensajes: 614
Antigüedad: 16 años, 10 meses
Puntos: 57
Respuesta: No me detecta teclas segun codigo ASCII

Trata utilizando el evento onkeydown en lugar de onkeypress
  #3 (permalink)  
Antiguo 21/07/2010, 06:36
 
Fecha de Ingreso: enero-2010
Mensajes: 128
Antigüedad: 14 años, 10 meses
Puntos: 2
Respuesta: No me detecta teclas segun codigo ASCII

Hola

Tenias razon pero en realidad la funcion no hace lo que yo quiero.

Quiero que en el cuadro de texto solo hacete lo que yo le digo, por ejemplo solo letras /[a-z]/ ; pero el problema es que la funcion como esta planteada no me permite usar las teclas rapidas (Ctrl + W; etc.). Necesito una funcion, que me evalue la tecla presionada y si es letra, espacio, borrar, etc lo tome, pero si es alguna tecla rapida (Ctrl + W; etc.) ó Shift o Inicio/Fin lo tome pero si es un caracter especial (parantesis, corchetes, etc) que no lo imprima. La idea es que en el nombre no tenga una barra o un corchete, etc.

¿Como puedo hacer eso?

Etiquetas: ascii, detecta, teclas
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 08:55.