Foros del Web » Programando para Internet » Javascript »

dos checkbox y otro de texto

Estas en el tema de dos checkbox y otro de texto en el foro de Javascript en Foros del Web. Hola Esto usando el autocompletador de aqui http://www.formatoweb.com.ar/ajax/ A parte de tener la caja de texto, tambien puse dos checkboxes que al estar selecionados, se ...
  #1 (permalink)  
Antiguo 15/12/2006, 10:59
 
Fecha de Ingreso: febrero-2005
Mensajes: 626
Antigüedad: 19 años, 2 meses
Puntos: 10
dos checkbox y otro de texto

Hola

Esto usando el autocompletador de aqui
http://www.formatoweb.com.ar/ajax/

A parte de tener la caja de texto, tambien puse dos checkboxes que al estar selecionados, se deben tambien enviar a mi aplicacion

y este el javascript
Código PHP:

function asignaVariables()
{
    
// Funcion que asigna variables que se usan a lo largo de las funciones    
    
v=1nuevaBusqueda=1busqueda=nullultimaBusquedaNula=null;
    
divLista=document.getElementById("lista");
    
inputLista=document.getElementById("input_2");
    
elementoSeleccionado=0;
    
ultimoIdentificador=0;
}

function 
nuevoAjax()

    
/* Crea el objeto AJAX. Esta funcion es generica para cualquier utilidad de este tipo, por
    lo que se puede copiar tal como esta aqui */
    
var xmlhttp=false
    try 
    { 
        
// Creacion del objeto AJAX para navegadores no IE
        
xmlhttp=new ActiveXObject("Msxml2.XMLHTTP"); 
    }
    catch(
e)
    { 
        try
        { 
            
// Creacion del objet AJAX para IE 
            
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); 
        } 
        catch(
E) { xmlhttp=false; }
    }
    if (!
xmlhttp && typeof XMLHttpRequest!="undefined") { xmlhttp=new XMLHttpRequest(); } 

    return 
xmlhttp
}

function 
eliminaEspacios(cadena)
{
    
// Funcion para eliminar espacios delante y detras de cada cadena
    
while(cadena.charAt(cadena.length-1)==" "cadena=cadena.substr(0cadena.length-1);
    while(
cadena.charAt(0)==" "cadena=cadena.substr(1cadena.length-1);
    return 
cadena;
}



function 
formateaLista(valor)
{
    
// Funcion encargada de ir colocando en negrita las palabras y asignarle un ID a los elementos
    
var x=0verificaExpresion=new RegExp("^("+valor+")""i");
    
    while(
divLista.childNodes[x]!=null)
    {
        
// Asigo el ID para reconocerlo cuando se navega con el teclado
        
divLista.childNodes[x].id=x+1;
        
// Coloco en cada elemento de la lista en negrita lo que se haya ingresado en el input
        
divLista.childNodes[x].innerHTML=divLista.childNodes[x].innerHTML.replace(verificaExpresion"<b>$1</b>");
        
x++;
    }
}

function 
limpiaPalabra(palabra)
{
    
// Funcion encargada de sacarle el codigo HTML de la negrita a las palabras
    
palabra=palabra.replace(/<b>/i"");
    
palabra=palabra.replace(/</b>/i"");
    return 
palabra;
}

function 
coincideBusqueda(palabraEnteraprimerasLetras)
{
    
/* Funcion para verificar que las primeras letras de busquedaActual sean iguales al
    contenido de busquedaAnterior. Se devuelve 1 si la verificacion es afirmativa */
    
if(primerasLetras==null) return 0;
    var 
verificaExpresion=new RegExp("^("+primerasLetras+")""i");
    if(
verificaExpresion.test(palabraEntera)) return 1;
    else return 
0;
}

function 
nuevaCadenaNula(valor)
{
    
/* Seteo cual fue la ultima busqueda que no arrojo resultados siempre y cuando la cadena
    nueva no comience con las letras de la ultima cadena que no arrojo resultados */
    
if(coincideBusqueda(valorultimaBusquedaNula)==0ultimaBusquedaNula=valor;
}

function 
busquedaEnBD()
{
    
/* Funcion encargada de verificar si hay que buscar el nuevo valor ingresado en la base
    de datos en funcion de los resultados obtenidos en la ultima busqueda y en base a que
    la cadena bsucada anteriormente este dentro de la nueva cadena */
    
var valor=inputLista.value;
    
    if((
coincideBusqueda(valorbusqueda)==&& nuevaBusqueda==0) || coincideBusqueda(valorultimaBusquedaNula)==1) return 0;
    else return 
1;
}

function 
filtraLista(valor)
{
    
// Funcion encargada de modificar la lista de nombres en base a la nueva busqueda
    
var x=0;

    while(
divLista.childNodes[x]!=null)
    {
        
// Saco la negrita a los elementos del listado
        
divLista.childNodes[x].innerHTML=limpiaPalabra(divLista.childNodes[x].innerHTML);
        if(
coincideBusqueda(limpiaPalabra(divLista.childNodes[x].innerHTML), valor)==0)
        {
            
/* Si remuevo el elemento x, el elemento posterior pasa a ocupar la posicion de
            x, entonces quedaria sin revisar. Por eso disminuyo 1 valor a x */
            
divLista.removeChild(divLista.childNodes[x]);
            
x--;
        }
        
x++;
    }
}

function 
reiniciaSeleccion()
{
    
mouseFuera(); 
    
elementoSeleccionado=0;
}

function 
navegaTeclado(evento)
{
    var 
teclaPresionada=(document.all) ? evento.keyCode evento.which;
    
    switch(
teclaPresionada)
    {
        case 
40:
        if(
elementoSeleccionado<divLista.childNodes.length)
        {
            
mouseDentro(document.getElementById(parseInt(elementoSeleccionado)+1));
        }
        return 
0;
        
        case 
38:
        if(
elementoSeleccionado>1)
        {
            
mouseDentro(document.getElementById(parseInt(elementoSeleccionado)-1));
        }
        return 
0;
        
        case 
13:
        if(
divLista.style.display=="block" && elementoSeleccionado!=0)
        {
            
clickLista(document.getElementById(elementoSeleccionado))
        }
        return 
0;
        
        default: return 
1;
    }
}    

function 
rellenaLista()
{
    var 
valor=inputLista.value;

    
// Valido con una expresion regular el contenido de lo que el usuario ingresa
    
var reg=/(^[a-zA-Z0-9.@ ]{2,40}$)/;
    if(!
reg.test(valor)) divLista.style.display="none";
    else
    {
        if(
busquedaEnBD()==0)
        {    
            
// Si no hay que buscar el valor en la BD
            
busqueda=valor;
    
            
// Hago el filtrado de la nueva cadena ingresada
            
filtraLista(valor);
            
// Si no quedan elementos para mostrar en la lista
            
if(divLista.childNodes[0]==null) { divLista.style.display="none"nuevaCadenaNula(valor); }
            else { 
reiniciaSeleccion(); formateaLista(valor); }
        }
        else
        {    
            
/* Si se necesita verificar la base de datos, guardo el patron de busqueda con el que se
            busco y luego recibo en una variable si existen mas resultados de los que se van a mostrar */
            
busqueda=valor;

            var 
ajax=nuevoAjax();
            
ajax.open("POST""index_proceso.php?"true);
            
ajax.setRequestHeader("Content-Type""application/x-www-form-urlencoded");
            
ajax.send("busqueda="+valor);
        
            
ajax.onreadystatechange=function()
            {    
                if (
ajax.readyState==4)
                {
                    if(!
ajax.responseText) { divLista.style.display="none"; }
                    else 
                    {
                        var 
respuesta=new Array(2);
                        
respuesta=ajax.responseText.split("&");
                
                        
/* Obtengo un valor que representa si tengo que ir a BD en las proximas 
                        busquedas con cadena similar */
                        
nuevaBusqueda=respuesta[0];
                
                        
// Si se obtuvieron datos los muestro
                        
if(respuesta[1]!="vacio"
                        { 
                            
divLista.style.display="block"divLista.innerHTML=respuesta[1]; 
                            
// Coloco en negrita las palabras
                            
reiniciaSeleccion();
                            
formateaLista(valor); 
                        }
                        
// En caso contrario seteo la busqueda actual como una busqueda sin resultados
                        
else nuevaCadenaNula(valor);
                    }
                }
            }
        }
    }
}

function 
clickLista(elemento)

{
    
/* Se ejecuta cuando se hace clic en algun elemento de la lista. Se coloca en el input el
    valor del elemento clickeado */
    
v=1;
    
valor=limpiaPalabra(elemento.innerHTML); 
    
busqueda=valorinputLista.value=valor;
    
divLista.style.display="none"elemento.className="normal";
}

function 
mouseFuera()
{
    
// Des-selecciono el elemento actualmente seleccionado, si es que hay alguno
    
if(elementoSeleccionado!=&& document.getElementById(elementoSeleccionado)) document.getElementById(elementoSeleccionado).className="normal"
}

function 
mouseDentro(elemento)
{
    
mouseFuera();
    
elemento.className="resaltado";
    
// Establezco el nuevo elemento seleccionado
    
elementoSeleccionado=elemento.id;

Para saber si esta seleccionado un checkbox, y funciona es esto

Código PHP:
if (document.getElementById("capac").checkbox="checked"
        {var 
param=1;}
        if (
document.getElementById("noparte").checkbox=="checked"
        {var 
param=2;}
        if (
document.getElementById("capac").checkbox="checked" && document.getElementById("noparte").checkbox=="checked"
        {var 
param=3;} 
El problema es que ya intente ponerlo en la funcion rellenaLista() asignaVariables() e incluso en otra funcion

Invocandola en el evento el onClick al checkbox, pero lo extraño es que mi aplicacion recibe el valor del checkbox por default y si el usuario agrega o cambia el checkbox, mi aplicacion todavia continua recibiendo el checkbox que anteriormente habia sido selecionado

Que hago?, gracias de antemano, todo el problema es JavaScript

Feliz navidad y feliz año nuevo
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 15:21.