Foros del Web » Programación para mayores de 30 ;) » Programación General »

como hago para que un link cumpla una determinada funcion

Estas en el tema de como hago para que un link cumpla una determinada funcion en el foro de Programación General en Foros del Web. Tengo un buscador el cual el codigo en el body es este: <body bgcolor="#000033" onLoad = SMPSetFocus() > <form name=formSearch action="javascript :startsearch() //"> <input name=txtSearch> ...
  #1 (permalink)  
Antiguo 09/01/2004, 01:09
 
Fecha de Ingreso: julio-2003
Ubicación: Rosario
Mensajes: 92
Antigüedad: 21 años, 4 meses
Puntos: 0
como hago para que un link cumpla una determinada funcion

Tengo un buscador el cual el codigo en el body es este:

<body bgcolor="#000033" onLoad = SMPSetFocus() >

<form name=formSearch action="javascript:startsearch() //">
<input name=txtSearch> <input name=send type=submit value=Buscar>
</form>

Bueno aqui aparece un recuadro y un boton Buscar. Se busca poniendo lo que deseo encontrar en el recuadro: ejemplo "Autos" y luego se pulsa Buscar.

Lo que quiero es un link que diga Autos y busque sin tener que ponerlo en el recuadro y pulsando el boton buscar, como hago?
__________________
SAB
  #2 (permalink)  
Antiguo 09/01/2004, 15:59
 
Fecha de Ingreso: enero-2004
Mensajes: 13
Antigüedad: 20 años, 10 meses
Puntos: 0
Hola,

Te escribo una posible solución de las muchas que hay:

Dentro de la función de javascript llamada "startsearch()", o en alguna función referenciada desde "startsearch()", existirá una linea donde coja el valor de la caja de texto llamada "txtSearch" para usarlo en la rutina de búsqueda.

Bien, solo tienes que variar esa línea y poner que en lugar de recoger el valor de la caja de texto lo coja desde una variable.

Por ejemplo, pongamos que el codigo es tal que así:

function startSearch()
{
Tu_Rutina_Previa;
RutinaDeBusqueda(documents.forms["formSearch"].txtSearch.value);
Tu_Rutina_Final;
}

Entendiendo que tu rutina previa y tu rutina final son los pasos que haces antes y despues de la búsqueda y RutinaDeBusqueda es la rutina donde haces la búsqueda propiamente. Es posible que no sea una función, si no que esté en el código de la función startSearch, eso no puedo saberlo sin ver el código, pero imagino que te harás una idea.

Bien, cambia la linea donde recoges el valor del texto (documents.forms["formSearch"].txtSearch.value) por un valor recogido de una variable previamente declarada como global (Después del tag <javascript> pones "var miBusqueda = ''")

Cuando crees el link para buscar "autos" directamente le asignas como acción una nueva función que asigne a la variable la palabra "autos", de la siguiente manera :

/******************************
* Código HTML
*******************************/

<a href="javascript: startPredefinedSearch('Autos'); void(null);">Autos</a>

/*******************************
* Función javascript
********************************/

function startPredefinedSearch(keyword)
{
// Asigna a la variable de busqueda definida anteriormente el valor predefinido
miBusqueda = keyword; // En este caso 'autos', dependiendo del parámetro
// Llama a la función de búsqueda
startSearch();
}

De esta forma tu link ya funcionará. Solo falta un detalle, controlar en la función startSearch si la búsqueda viene de un valor predefinido o de un valor entrado por el usuario. Si el valor es predefinido, la variable "miBusqueda" contendrá una cadena de caracteres, si no será una cadena vacia, por lo que en tu función startSearch(), antes de empezar con la rutina de búsqueda, debes hacer algo así como :

// Miramos el contenido de la variable
if(miBusqueda == "")
{
// No hay busqueda predefinida, luego buscamos desde la caja de texto
miBusqueda = documents.forms["formSearch"].txtSearch.value;
}

Ahora tu variable "miBusqueda" tendrá un valor seguro. Si es predefinida la que pases por parametro, si no lo es la que coge del texto.

Esta es la forma de hacerlo que me ha parecido mejor, por sencilla y standar, no obstante hay otras. Te pongo una más sencilla pero más sucia.

Se trata de modificar la función startSearch para que esta reciba la palabra a buscar por parametro. Así, debes cambiar la línea "documents.forms["formSearch"].txtSearch.value" por el parametro.

Entonces en modificas el formulario, cambiando el tag inicial por:

<form name=formSearch action="javascript:startsearch(this.txtSearch.valu e) //">

De esta forma, al buscar a través del botón submit le pasará a "startSearch" el valor de la caja de texto.

Entonces en el link de autos haces:

<a href="javascript: startSearch('Autos'); void(null);">Autos</a>

Así al clickar el link pasará la palabra 'autos' como parámetro a la función "startSearch()"

Hay muchas otras formas de hacerlo, pero yo te aconsejo la primera.

Saludos
  #3 (permalink)  
Antiguo 10/01/2004, 00:42
 
Fecha de Ingreso: julio-2003
Ubicación: Rosario
Mensajes: 92
Antigüedad: 21 años, 4 meses
Puntos: 0
Hola kolombo, gracias por la ayuda que me diste, igualmente no me funcionó pero tengo que ser yo el que me equivoqué ya que no entiendo mucho de javascript. El tema que respondiste fue este:

Tengo un buscador el cual el codigo en el body es este:

<body bgcolor="#000033" onLoad = SMPSetFocus() >

<form name=formSearch action="javascript:startsearch() //">
<input name=txtSearch> <input name=send type=submit value=Buscar>
</form>

Bueno aquí aparece un recuadro y un botón Buscar. Se busca poniendo lo que deseo encontrar en el recuadro: ejemplo "Autos" y luego se pulsa Buscar.

Lo que quiero es un link que diga Autos y busque sin tener que ponerlo en el recuadro y pulsando el botón buscar, como hago?.
-------------------------------------------------------------------------------
Te pido que me ayudes una vez más y aquí te mando el código entero, para ver qué parte del código debo cambiar para lograr lo que quiero y si es posible también quisiera un menú ejemplo:
<form name="form1">
<select name="menu1">
<option selected>Auto</option>
</select>
<input type="button" name="Button1" value="Ir">
</form>
-------------------------------------------------------------------------------
El Código te lo mando mediante otro e-mail, porque es largo, Muchas Gracias
__________________
SAB
  #4 (permalink)  
Antiguo 10/01/2004, 15:56
 
Fecha de Ingreso: enero-2004
Mensajes: 13
Antigüedad: 20 años, 10 meses
Puntos: 0
Hola Sabwebm,

El código que me enviaste está incompleto, faltan funciones sin las cuales no puede funcionar, mandamelas para que pueda saber si el código que introduzco funciona.

Igualmente, te he hecho los cambios que creo necesarios, pero no puedo comprobar el resultado porque me faltan esas funciones. (Funciones como "CheckWildCard", "DoSortResults()", "WriteMatchedPages()", "WriteDocEnd();", "WriteHTML();", "SearchPage()")

Supongo que no me has pasado el codigo entero.

Sea como sea, trata de hacer los cambios que te propongo, y si no te funciona, mandame el código entero y veremos donde esta el problema.

Si el resto del código te funciona, esto deberia funcionarte tambien.

Y ya sabes, es un placer echarte una mano, si no consigues solucionarlo no dudes en escribir de nuevo.

Saludos

PD: El código te lo mando en un mensaje privado
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 (incluyéndote)




La zona horaria es GMT -6. Ahora son las 14:22.