Foros del Web » Programando para Internet » Javascript »

Buscar Palabras

Estas en el tema de Buscar Palabras en el foro de Javascript en Foros del Web. Hola: No tengo mucha idea de Javascript, pero saque de un programa este código Javascript para buscar palabras. No reconoce mayúsculas y minúsculas, pero si ...
  #1 (permalink)  
Antiguo 22/10/2004, 21:32
Avatar de satake  
Fecha de Ingreso: julio-2004
Mensajes: 140
Antigüedad: 19 años, 8 meses
Puntos: 0
Exclamación Buscar Palabras

Hola:
No tengo mucha idea de Javascript, pero saque de un programa este código Javascript para buscar palabras. No reconoce mayúsculas y minúsculas, pero si reconoce los acentos, yo necesito que no reconozca ni mayúsculas ni acentos. O sea, si yo busca por ejemplo la palabra mamá y escribo mama en el formulario, que la encuentre igual.
Si alguien sabe como hacer esto por favor modifique el código y me lo envíe, através del foro o por mail a: [email protected]
Acá les envío el código:
<!-- Copiar dentro del tag BODY -->

<script language="JavaScript">

// By Mike Hall ([email protected])

var NS4 = (document.layers);
var IE4 = (document.all);

var win = window; // Con frames usar top.nombre.window;
var n = 0;

function findInPage(str) {

var txt, i, found;

if (str == "")
return false;

// Find next occurance of the given string on the page, wrap around to the
// start of the page if necessary.

if (NS4) {

// Look for match starting at the current point. If not found, rewind
// back to the first match.

if (!win.find(str))
while(win.find(str, false, true))
n++;
else
n++;

// If not found in either direction, give message.

if (n == 0)
alert("Not found.");
}

if (IE4) {
txt = win.document.body.createTextRange();

// Find the nth match from the top of the page.

for (i = 0; i <= n && (found = txt.findText(str)) != false; i++) {
txt.moveStart("character", 1);
txt.moveEnd("textedit");
}

// If found, mark it and scroll it into view.

if (found) {
txt.moveStart("character", -1);
txt.findText(str);
txt.select();
txt.scrollIntoView();
n++;
}

// Otherwise, start over at the top of the page and find first match.

else {
if (n > 0) {
n = 0;
findInPage(str);
}

// Not found anywhere, give message.

else
alert("Not found.");
}
}

return false;
}

</script>

<form name="search" onSubmit="return findInPage(this.string.value);">
<font size="2"><p></font><font size="3"><input name="string" type="text" size="15"
onChange="n = 0;"></font> <input type="submit" value="Buscar"> </p>
</form>
  #2 (permalink)  
Antiguo 23/10/2004, 07:29
 
Fecha de Ingreso: octubre-2004
Ubicación: España
Mensajes: 894
Antigüedad: 19 años, 6 meses
Puntos: 3
Hola, satake

Pasa antes el texto por una función que le quite los acentos; prueba con ésta:

Código:
function quitaAcentos(tex) {
	var n=12
	var x = new Array(n), y = new Array(n)
	x[0] = /á/g ; y[0] = 'a'
	x[1] = /Á/g ; y[1] = 'A'
	x[2] = /é/g ; y[2] = 'e'
	x[3] = /É/g ; y[3] = 'E'
	x[4] = /í/g ; y[4] = 'i'
	x[5] = /Í/g ; y[5] = 'I'
	x[6] = /ó/g ; y[6] = 'o'
	x[7] = /Ó/g ; y[7] = 'O'
	x[8] = /ú/g ; y[8] = 'u'
	x[9] = /Ú/g ; y[9] = 'U'
	x[10] = /ñ/g ; y[10] = 'n'
	x[11] = /Ñ/g ; y[11] = 'N'
	for (i=0;i<n;i++) {
		tex = tex.replace(x[i],y[i])
	}
	return tex
}
(debes ponerla dentro del HEAD).

Entonces sería, en tu código, en lugar de:
Código:
onSubmit="return findInPage(this.string.value);"
poner:

Código:
onSubmit="return findInPage(quitaAcentos(this.string.value));"
Si no quieres distinguir mayúsculas, así:
Código:
onSubmit="return findInPage(quitaAcentos(this.string.value.toLowerCase()));"
  #3 (permalink)  
Antiguo 23/10/2004, 10:42
Avatar de satake  
Fecha de Ingreso: julio-2004
Mensajes: 140
Antigüedad: 19 años, 8 meses
Puntos: 0
Hola, angsanchez, creo que puede andar, pero no se por que, cuando pongo vista previa en el explorador, lo hago con frontpage, en la pagina, me aparece lo que esta en head, como si lo pusieraa en body, y abajo el formulario, no se si podes corregir la parte que va en el head, porque ya dije no se nada de javascript y necesito el codigo, lo antes posible
  #4 (permalink)  
Antiguo 24/10/2004, 04:39
 
Fecha de Ingreso: octubre-2004
Ubicación: España
Mensajes: 894
Antigüedad: 19 años, 6 meses
Puntos: 3
Creo que no hay nada que corregir, no sé qué puede pasar. Si me pasas tu código de la página completa, le echo un vistazo.
  #5 (permalink)  
Antiguo 24/10/2004, 19:48
Avatar de satake  
Fecha de Ingreso: julio-2004
Mensajes: 140
Antigüedad: 19 años, 8 meses
Puntos: 0
Hola de nuevo, angsanchez:
Te cuento que pude hacerlo andar, pero no es lo que yo necesito, lo que hace el codigo que me pasaste es, por ejemplo, si yo pongo en el formulario, pagina, encuentra, pagina, y si pongo, página con acento, encuentra pagina tambien, pero yo lo que necesito, es que cuando yo ponga en el formulario, pagina, sin acento, encuentre la palabra, pagina o página, tanto con acento como sin acento, si me entendes, por favor conseguime el codigo.
Desde ya muchas gracias, la pagina es www.aponlinevillaguay.com.ar.
  #6 (permalink)  
Antiguo 25/10/2004, 15:57
 
Fecha de Ingreso: octubre-2004
Ubicación: España
Mensajes: 894
Antigüedad: 19 años, 6 meses
Puntos: 3
Esto me parece difícil, por no decir imposible de entrada. Si consideras que el acento puede estar en cualquier parte de la palabra que se meta, plantear la doble búsqueda será difícil. Es como si quieres que al buscar pagina te encuentre también pagino
¿No es más fácil que hagas 2 búsquedas? Al escribir el usuario la palabra sí sabe dónde va acentuada y puede fácilmente buscarla con y sin acento.
¿Por qué quieres conseguir eso?
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

SíEste tema le ha gustado a 1 personas




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