Ver Mensaje Individual
  #9 (permalink)  
Antiguo 12/10/2005, 17:29
Avatar de tunait
tunait
Moderadora
 
Fecha de Ingreso: agosto-2001
Ubicación: Terok Nor
Mensajes: 16.805
Antigüedad: 22 años, 8 meses
Puntos: 381
Hum .. digamos que para averiguarlo automáticamente habría que contemplar tantas posibilidades que resultaría casi absurdo.

El tema es el siguiente, el único dato del objeto con el que se va a trabajar es el id y con eso no se puede saber qué tipo de objeto es. No existe (que yo sepa) una propiedad que contemple si es o no un campo de form. Todo lo más sería pedirle su tagName y pasearlo por un condicional que averigue si coincide con un listado de posibilidades pero me parece que el hacerlo así no tiene mucho sentido.

En tu lugar lo que haría sería simplemente agregar un argumento más a pasarle a la clase php con un simple true o false y que la clase escriba una u otra línea a la función js. Claro que esto funcionaría sólo con un tipo de campos dentro de un mismo documento; si quisieras poder usarlo tanto para controles de formularios como para otro tipo de elementos en el mismo documento entonces se podría agregar el enviar también ese parámetro a true o false al llamar a la propia función javascript.


Por un lado, prueba a ponerle esto a tu clase en la función CambiaCabecera()
Código:
        /*********************************************/ 
        $this->codigo .= "// Funcion q reemplaza el texto\n"; 
        $this->codigo .= "function replaceHTML(idName, content,esValue)\n"; 
        $this->codigo .= "{\n"; 
        $this->codigo .= "    var target = document.getElementById(idName); \n"; 
    $this->codigo .= "    propiedad = esValue ? 'value' : 'innerHTML'; \n";   
        $this->codigo .= "    eval('target.' + propiedad + ' = content;') \n"; 
        $this->codigo .= "}\n"; 
        /*********************************************/
y además le agregas también ....


Código:
    /********************************************************/ 
    /*    LeeDatos                                            */ 
    /********************************************************/ 
    function LeeDatos() 
    { 
             
        if ($this->formato == 'GET') 
        { 
            $this->codigo .= "function getInfo(valor,esValue){\n"; 
            if ($this->entrada != '') 
                { 
                $this->codigo .= "valor = document.getElementById('".$this->entrada."').value;"; 
                $this->codigo .= "    http.open('get', '".$this->url."?".$this->entrada."=' + valor);\n"; 
                } 
            else 
                $this->codigo .= "    http.open('get', '".$this->url."' + valor);\n"; 
            $this->codigo .= "    http.onreadystatechange = function(){handleInfo(esValue)};\n"; 
            $this->codigo .= "    http.send(null);\n"; 
            $this->codigo .= "}\n"; 
        } 
        else 
            { 
            $this->codigo .= "function getInfo(valor, esValue){\n"; 
            $this->codigo .= "    http.open('POST', '".$this->url."',true);\n"; 
            $this->codigo .= "    http.onreadystatechange = function(){handleInfo(esValue)};\n"; 
            $this->codigo .= "    http.setRequestHeader(\"Content-Type\", \"application/x-www-form-urlencoded\");\n"; 
            if ($this->entrada != '') 
                { 
                $this->codigo .= "    valor = document.getElementById('".$this->entrada."').value;\n"; 
                $this->codigo .= "    http.send('".$this->entrada."=' + valor);\n"; 
                } 
            else 
                $this->codigo .= "    http.send(null);\n"; 
            $this->codigo .= "}\n"; 
            } 
    } 
    /********************************************************/ 
    /*    EscribeDatos                                        */ 
    /*        - $div     --> Donde volcamos los datos            */ 
    /********************************************************/ 
    function EscribeDatos($div) 
    { 
        /*Funcion q muestra el resultado*/ 
        $this->codigo .= "function handleInfo(esValue){\n"; 
        $this->codigo .= "    if(http.readyState == 1){\n"; 
        $this->codigo .= "        replaceHTML('".$div."', 'Me estoy cargando...',esValue);\n"; 
        $this->codigo .= "    }\n"; 
        $this->codigo .= "    if(http.readyState == 4){\n"; 
        $this->codigo .= "        replaceHTML('".$div."', http.responseText, esValue);\n"; 
        $this->codigo .= "    }\n"; 
        $this->codigo .= "}\n"; 
    }
Ovbiamente fíjate sólo en lo que agregué/cambié en negritas.

Luego cuando quieras usar el asunto le envías el parámetro true o false en la función getInfo() dependiendo de si lo vas a aplicar sobre un campo de formulario o no.

Si es para un campo de form: getInfo(true)
Si es para otro elemento getInfo(false)

No lo he probado pero así a ojo, salvo que se me haya escapado algún error sintáctico y en teoría creo que debería funcionar

Yá me dirás algo.

Un saludo

Última edición por tunait; 12/10/2005 a las 17:34