Foros del Web » Programando para Internet » Javascript »

Problema con autocompletar con ASP

Estas en el tema de Problema con autocompletar con ASP en el foro de Javascript en Foros del Web. Buenas tardes: Encontré este código navegando por ahí y me resultó muy pero muy bueno, SIN EMBARGO tiene un pequeño pero que no logro solucionar: ...
  #1 (permalink)  
Antiguo 04/06/2008, 13:18
 
Fecha de Ingreso: marzo-2008
Mensajes: 82
Antigüedad: 16 años, 1 mes
Puntos: 0
Problema con autocompletar con ASP

Buenas tardes:

Encontré este código navegando por ahí y me resultó muy pero muy bueno, SIN EMBARGO tiene un pequeño pero que no logro solucionar: una vez seleccionado el elemento no se puede volver a utilizar al menos que se recargue la página:

PARTE DEL FORMULARIO QUE LO INVOCA
Código:
<input type="text" name="user_ruc" id="txt1" size="11" maxlength="11" onKeyUp="showHint(this.value)" onKeyPress="return acceptNum(event)" class="texto_amarillo">
<span id="txtHint" style="position:absolute; left:200px; top:70px; background-color:white; margin:5px; float:left;"></span>
GETHINT.JS
Código:
var xmlHttp 
function showHint(str)
{
	if (str.length==0)  
	{   
		document.getElementById("txtHint").innerHTML="";  
		return;  
	}

	xmlHttp=GetXmlHttpObject()
	if (xmlHttp==null)  
	{  
		alert ("Your browser does not support AJAX!");  
		return;  
	} 
	
	var url="gethint.asp";
	url=url+"?q="+str;
	url=url+"&sid="+Math.random();
	xmlHttp.onreadystatechange=stateChanged;
	xmlHttp.open("GET",url,true);
	xmlHttp.send(null);
}  

function stateChanged() 
{ 
	if (xmlHttp.readyState==4)
	{document.getElementById("txtHint").innerHTML=xmlHttp.responseText;}
} 

function GetXmlHttpObject()
{
	var xmlHttp=null;
	try  
	{  
		// Firefox, Opera 8.0+, Safari  
		xmlHttp=new XMLHttpRequest();  
	}
	catch (e)  
	{  
		// Internet Explorer  
		try    
		{xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");}  
		catch (e)    
		{xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");}  
	}
	return xmlHttp;
} 

function selectItem(ruc,empresa,id)
{
	document.getElementById("txt1").value=ruc;
	document.getElementById("txtHint").style.display="none";  
	
	document.registros.user_cuenta_1.value=id;
	var str=empresa;
	var cliente=str.replace(/_/g," ");
	document.registros.nombre.value=cliente;
	document.registros.ruc.value=ruc;
}

GETHINT.ASP
Código:
<%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%>
<%
	response.expires=-1
	Dim rsWords
	Dim rsWords_numRows
	Dim q
	Dim hint
	
	q=ucase(request.querystring("q"))
	hint=""
	
	Set rsWords = Server.CreateObject("ADODB.Recordset")
	rsWords.ActiveConnection = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=f:\inetpub\base de datos\planilla.mdb"
	rsWords.Source = "Select *  From Clientes  Where (RUC Like'" + q + "%') Order By Razon_Social"
	rsWords.CursorType = 2
	rsWords.CursorLocation = 2
	rsWords.LockType = 3
	rsWords.Open()
	rsWords_numRows = 0 
	
	If Not rsWords.EOF Then
		Do While Not rsWords.EOF
			varEmpresa=Replace(Server.HTMLEncode(rsWords("razon_social"))," ","_")
			If trim(hint) = "" Then
				hint = "<a href=javascript:selectItem('" & rsWords("ruc") & "','" & varEmpresa & "','" & rsWords("id") & "')>" & rsWords("ruc") & "&nbsp;::&nbsp;" & rsWords("razon_social") & "</a>"
			Else
				hint = hint & "<br><a href=javascript:selectItem('" & rsWords("ruc") & "','" & varEmpresa & "','" & rsWords("id") & "')>"& rsWords("ruc") &"&nbsp;::&nbsp;"& rsWords("razon_social") &"</a>"
			End If
			rsWords.MoveNext()
		Loop
	End If
	
	if trim(hint)="" then
		response.write("no suggestion")
	else
		response.write(hint)
	end	if 
	
	rsWords.Close()
	Set rsWords = Nothing
%>
La cuestión es que funciona bien para escoger el elemento que deseo, inclusive mientras estoy ingresando números (sólo permite ingresar números en el campo del formulario pero eso no interfiere) va cambiando el desplegado de autocompletar. Inclusive si borro todo y empiezo de nuevo normal.

La cosa va cuando selecciono un elemento. Se ejecuta normal, pero si luego borro el campo user_ruc y empiezo a ingresar números, simplemente nada pasa.

Encontré otro que no tiene este problema, pero al momento de adicionarlo a mi proyecto (que tiene varias funciones javascript por cierto) algo debe de interferir supongo, porque me arroja un error que corresponde al archivo js de Ajax de este último ejemplo que encontré. Este es más simple (el otro es un poquitín más complicado creo) pero me gustaría utilizar este porque ya logré que funcione bien salvo el detalle que menciono.

Si alguien me puede ayudar le quedaré muy agradecida, en verdad necesito de vuestra ayuda.

Un saludo esperanzador y cordial desde el Perú
  #2 (permalink)  
Antiguo 04/06/2008, 15:29
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: Problema con autocompletar con ASP

Mmm es probable que el evento onKeyUp tenga algún conflicto con el KeyPress, analizando un poco mas en ninguna parte veo donde haces la llamada a la función selectItem.

Te muevo al foro de JS para que te asesoren más.

Saludos.
  #3 (permalink)  
Antiguo 04/06/2008, 15:59
 
Fecha de Ingreso: marzo-2008
Mensajes: 82
Antigüedad: 16 años, 1 mes
Puntos: 0
Respuesta: Problema con autocompletar con ASP

Gracias por ubicarme en el foro correcto.
Mira, la función KeyPress no interfiere, lo he probado.
Ahora, la función selectItem es llamada en la página GETHINT.ASP.

El código original lo encontré en esta página

Cita:
http://forums.aspfree.com/code-bank-54/auto-suggest-form-199141.html
Simplemente hice algunas modificaciones agregandole la función selectItem. Funciona bien, pero como te digo, si copias los archivos y los ejecutas en tu servidor (yo tengo uno en mi PC pues uso Xp Pro) verás que funciona bien aún con la selección, sin embargo, una vez seleccionado ya no funciona aunque borres los datos del input.

Ojalá puedas ayudarme
Gracias por todo!!!!!!!!!!
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 23:30.