Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

clagils

delay de uma tecla no onkeypress

Recommended Posts

bom dia galera so uma perguntinhaeu to fazendo assim para detectar a uma tecla p pressionadadocument.getElementById("flt"+i+"_"+id).onkeypress = DetectKey;so q ta dando DELAY de um tecla ,esta masi ou menos assimquando eu pressiono uma tecla (exemplo: A) ele so vai me retornar o A quando eu pressiono uma segunda tecla(exemplo: T), ai quando eu pressiono o T ele vai recuperar apenas o Acomo arrumar esse delay de 1 tecla?

Compartilhar este post


Link para o post
Compartilhar em outros sites

O erro deve estar na sua função DetectKey. Testa esse script e se servir adapta para o seu caso:

<script>	function char(e){		try{var element = e.which		  }catch(er){};		try{var element = event.keyCode	}catch(er){};				alert(String.fromCharCode(element));	}	window.onload = function(){ document.getElementById('teste').onkeypress = char;}			</script><input type="text" id="teste" />
OK..!!?? T+...

Compartilhar este post


Link para o post
Compartilhar em outros sites

putiz, legal eu tava tentando fazer isso a muito tempo

so q agora o problema nao era so um alert uam funcao q recupera o id do elemeto

segue abaixo

 

document.getElementById("flt"+i+"_"+id).onkeypress = DetectKey;function DetectKey(e){	  var tblid = this.getAttribute("id").split("_")[1];	  Filter(tblid);}

entao no onpress teculpera o id do elemento

po eu tentai so q nao cosegui adaptar

 

da pra dar uam forcinha?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vê se isso ajuda:

<script>	function char(e){		try{var element = e.target		  }catch(er){};		try{var element = event.srcElement  }catch(er){};				alert(element.id);	}	window.onload = function(){ document.getElementById('teste').onkeypress = char;}			</script><input type="text" id="teste" />

OK..!!?? T+...

Compartilhar este post


Link para o post
Compartilhar em outros sites

po vagner, descupa cara eu sei q você deve estar na correria ai mas eu vo pedir um favor, é q eu nao cosigo de jeito nenhum fazer funcionar o onpress sem delay

 

o q você passou codigo funciona mas quando eu ponho aqui ele nao vai

 

segue a baixo o codigo q eu estou usando, ele serve pra fazer filter em tabelas igual ao jquery.tablefilter

so q é mais leve

 

se você puder me ajudar eu agradeço

 

// JavaScript Document/*====================================================  - HTML Table Filter Generator v1.0  - développé par Max Guglielmi  - mguglielmi.free.fr  - Prière de conserver ce message=====================================================*/var TblId, StartRow, SearchFlt;TblId = new Array, StartRow = new Array;function setFilterGrid(id,ref_row)/*====================================================  - vérifie que l'id passé en param existe bien et  que c'est bein une table  - appel de la fonction qui ajoute les inputs et  le bouton=====================================================*/{  var tbl = document.getElementById(id);  if(tbl != null && tbl.nodeName.toLowerCase() == "table")  {	TblId.push(id);	ref_row == undefined ? StartRow.push(2) : StartRow.push(ref_row+2);	var ncells = getCellsNb(id,ref_row);	AddRow(id,ncells);  }}function AddRow(id,n)/*====================================================  - ajoute un filtre (input) pour chaque colonne  - ajoute le bouton dans la dernière colonne=====================================================*/{  var t = document.getElementById(id);  var fltrow = t.insertRow(1);  var inpclass = "flt";  for(var i=0; i<n; i++)  {	var fltcell = fltrow.insertCell(i);	var inp = document.createElement("input");		inp.setAttribute("id","flt"+i+"_"+id);	inp.setAttribute("type","text");	//inp.setAttribute("class","flt"); //ne marche pas dans ie<=6	fltcell.appendChild(inp);		if(i==n-1) inpclass = "flt_s";	document.getElementById("flt"+i+"_"+id).className = inpclass;//##########################################################################	document.getElementById("flt"+i+"_"+id).onkeypress = DetectKey;		/*	if(i==n-1) // on ajoute le bouton "go"	{	  var btn = document.createElement("a");	  	  btn.setAttribute("id","btn"+i+"_"+id);	  btn.setAttribute("href","java script:Filter('"+id+"');");	  btn.setAttribute("class","go");	  fltcell.appendChild(btn);	  btn.appendChild(document.createTextNode("go"));	  	  document.getElementById("btn"+i+"_"+id).className = "btn";	}//if   */	  }// for i}function Filter(id)/*====================================================  - récupère les chaines recherchés dans le array   SearchFlt  - récupère le contenu des td de chaque tr et   le compare à la chaine recherché dans la colonne  courante  - le tr est caché si toutes les chaines ne sont   pas trouvé=====================================================*/{    getFilters(id);  var t = document.getElementById(id);  var SearchArgs = new Array();  var ncells = getCellsNb(id);    for(i in SearchFlt) SearchArgs.push((document.getElementById(SearchFlt[i]).value).toLowerCase());    var start_row = getStartRow(id);  var row = t.getElementsByTagName("tr");    for(var k=start_row; k<row.length; k++)  {  	/*** si la table a été déjà filtré certaines lignes ne sont pas visibles ***/	if(row[k].style.display == "none") row[k].style.display = "";		var cell = getChildElms(row[k]).childNodes;	var nchilds = cell.length;	if(nchilds == ncells){// vérife que la ligne a le nombre exact de cellules	  var cell_value = new Array();	  var occurence = new Array();	  var isRowValid = true;			  for(var j=0; j<nchilds; j++)// cette boucle récupère le contenu de la cellule	  {		var cell_data = getCellText(cell[j]);		cell_value.push(cell_data);				if(SearchArgs[j]!="")		{		  occurence[j] = cell_data.split(SearchArgs[j]).length;		}	  }//for j	  	  for(var t=0; t<ncells; t++)	  {		if(SearchArgs[t]!="" && occurence[t]<2) 		{		  isRowValid = false;		  		}	  }//for t	  	}//if				if(isRowValid==false) row[k].style.display = "none";	else row[k].style.display = "";	  }// for k}function getCellsNb(id,nrow)/*====================================================  - renvoie le nombre de cellules d'une ligne  - si nrow est passé en paramètre, renvoie le   nombre de cellules de la ligne specifiée=====================================================*/{  var t = document.getElementById(id);  var tr;  if(nrow == undefined) tr = t.getElementsByTagName("tr")[1];  else tr = t.getElementsByTagName("tr")[nrow];  var n = getChildElms(tr);  return n.childNodes.length;}function getFilters(id)/*====================================================  - les id des filtres (input) sont gardés dans le  array SearchFlt=====================================================*/{  SearchFlt = new Array;  var t = document.getElementById(id);  var tr = t.getElementsByTagName("tr")[1];  var inp = tr.getElementsByTagName("input");    for(var i=0; i<inp.length; i++) SearchFlt.push(inp[i].getAttribute("id"));}function getStartRow(id)/*====================================================  - renvoie la ligne de réference d'un tableau=====================================================*/{  var r;  for(j in TblId)  {	if(TblId[j] == id) r = StartRow[j];  }  return r;}function getChildElms(n)/*====================================================  - vérifie que le noeud est bien un   (ELEMENT_NODE nodeType=1)  - Enlève les éléments texte   (TEXT_NODE nodeType=3)  - Expres pour firefox qui renvoi tous le childs  d'un noeud (ELEMENT_NODE+TEXT_NODE+les autres)=====================================================*/{  if(n.nodeType == 1)  {	var enfants = n.childNodes;	for(var i=0; i<enfants.length; i++)	{	  var child = enfants[i];	  if(child.nodeType == 3) n.removeChild(child);	}	return n;    }}function getCellText(n)/*====================================================  - renvoie le texte du noeud et de ses childs  - au cas où on a des balises dans le td, on   récupère quand même leur contenu pour que la   recherche ne soit pas faussée=====================================================*/{  var s = "";  var enfants = n.childNodes;  for(var i=0; i<enfants.length; i++)  {	var child = enfants[i];	if(child.nodeType == 3) s+= child.data;	else s+= getCellText(child);  }  return s.toLowerCase();}//##########################################################################function DetectKey(e){/*====================================================  - common fn that detects return key for a given  element (onkeypress attribute on input)  - fonction de detection de la touche 'enter'   attaché  un élément défini (l'attribut onkeypress  dans les inputs)=====================================================*/		try{var element = e.target		  }catch(er){};		try{var element = event.srcElement  }catch(er){};			   // alert(element.id.split("_")[1]);	  var tblid = element.id.split("_")[1];	  Filter(tblid);}

 

geralmente eu nao coloco codigos inteiros para nao atrapalhar, mas é q agora nao teve jeito

 

as partes q eu acho q devem ser cofiguradas estao abaixo desta marcacao ####

obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.