Ver Mensaje Individual
  #2 (permalink)  
Antiguo 24/09/2010, 06:47
Avatar de Adler
Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 4 meses
Puntos: 126
Respuesta: Función para buscar en web

Hola

Este es de @panino
Código Javascript:
Ver original
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml">
  3. <head>
  4. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
  5. <title>test</title>
  6. <script>
  7. String.prototype.preg_quote=function(){
  8.     p= /([:.\+*?[^\]$(){}=!<>|:)])/g;
  9.     return this.replace(p,"\\$1");
  10. }
  11. function buscar(cadena){
  12.        resetear();
  13.     if(!cadena.length)return;
  14.     var info3;
  15.     cadena=cadena.preg_quote();
  16.     var patron=new RegExp(cadena+'(?!\}\})','gim');
  17.     var espacio=/^\s$/;
  18.     var el=document.getElementById('tabla').getElementsByTagName('*');
  19.    for(var ii=0;ii<el.length;ii++){
  20.         if(el[ii].hasChildNodes && el[ii].nodeName.toLowerCase()!='title' && el[ii].nodeName.toLowerCase()!='script' && el[ii].nodeName.toLowerCase()!='meta' && el[ii].nodeName.toLowerCase()!='link' && el[ii].nodeName.toLowerCase()!='style'){
  21.             var tt=el[ii].childNodes;
  22.             for(var jj in tt){
  23.                 if(tt[jj].nodeType==3 && !espacio.test(tt[jj].nodeValue)){
  24.                     patron.lastIndex = 0;
  25.                     if(info3=patron.exec(tt[jj].nodeValue)){
  26.                         tt[jj].nodeValue=tt[jj].nodeValue.replace(patron,'{{'+tt[jj].nodeValue.substr(info3['index'],cadena.length)+'}}');
  27.                
  28.                     }
  29.                 }
  30.  
  31.             }        
  32.         }
  33.     }
  34.    document.getElementById('tabla').innerHTML=document.getElementById('tabla').innerHTML.split('}}').join('</span>').split('{{').join('<span style="background-color: yellow">');
  35.    
  36. }
  37. function resetear(){
  38.     document.getElementById('tabla').innerHTML=original;
  39. }
  40. window.onload=function(){
  41.     original=document.getElementById('tabla').innerHTML;
  42. }
  43. </script>
  44. </head>
  45.  
  46. <body>
  47. <form id="form1" name="form1" method="post" action="">
  48.   <input name="key" type="text" id="key" onkeyup="buscar(this.value)" />
  49.   <br />
  50.   <div id="tabla">
  51.   <table width="300" border="1" cellpadding="1" >
  52.    
  53.     <tr>
  54.       <td>Pepe</td>
  55.       <td>L&#243;pez</td>
  56.     </tr>
  57.     <tr>
  58.       <td>Jos&#233;</td>
  59.       <td>San Mart&#237;n </td>
  60.     </tr>
  61.   </table>
  62.   </div>
  63. </form>
  64. </body>
  65. </html>
y este otro es mio
Código Javascript:
Ver original
  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  2. <html xmlns="http://www.w3.org/1999/xhtml"lang="es" xml:lang="es">
  3. <head>
  4. <meta name="http-equiv" content="Content-type: text/html; charset=UTF-8"/>
  5. <script type="text/javascript">
  6. var cadena = '';
  7. var largo_cadena = 0;
  8.  
  9. window.onload = function() {cadena = document.getElementById('texto').innerHTML; largo_cadena = cadena.length;};
  10.  
  11. function Resaltar(cadABuskar) {
  12. var caracteresInput = cadABuskar.length;
  13.  
  14.     if (caracteresInput == 2) {
  15.         document.getElementById('texto').innerHTML = cadena;
  16.         document.getElementById('terminos').style.border = '';
  17.  
  18.     } else if (caracteresInput >= 3) {
  19.  
  20. var rgEx = new RegExp(cadABuskar, 'g\i');
  21.  
  22.         if (rgEx.test(cadena.substr(0,parseInt(largo_cadena)))) {
  23.                 var marca = cadena.substr(0,parseInt(largo_cadena)).replace(rgEx, function(coincidencia){return '<span style=\"background-color:#9ACD32;color:#FFF;\">' + coincidencia + '</span>';});
  24.                     document.getElementById('texto').innerHTML =  marca;
  25.             document.getElementById('terminos').style.border = 'solid #9ACD32 1px';
  26.             } else {
  27.             document.getElementById('texto').innerHTML = cadena;
  28.             document.getElementById('terminos').style.border = 'solid #FF0000 1px';
  29.         }
  30.     }
  31. }
  32. </script>
  33. </head>
  34. <body>
  35. <form method="post" action="" name="" autocomplete="off">
  36. Buscar Terminos: <input type="text" value="" id="terminos" onkeyup="Resaltar(this.value);" />
  37. </form>
  38. <div id="texto">
  39. <table width="300" border="1" cellpadding="1" >
  40.    
  41.     <tr>
  42.       <td>Pepe</td>
  43.       <td>López</td>
  44.     </tr>
  45.     <tr>
  46.       <td>José</td>
  47.       <td>San Martín </td>
  48.     </tr>
  49.   </table>
  50. </div>
  51. </body>
  52. </html>
Suerte
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />