Estoy teniendo serios problemas con IE y JavaScript. No es la primera vez que me pasa este tipo de cosas, pero siempre encontraba soluciones antes de pedir ayuda. Ya hoy, estoy completamente exausto.
El problema consiste en lo siguiente:
Tengo una clase en JavaScript (programada asquerosamente) para que complete ciertos campos de un formulario Web.

Donde dice "Cliente 1" solo tiene el primer campo disponible para escribir (Empresa), en este hay un autosuggest para ayudar a seleccionar la empresa que quiere ingresar.
En donde dice "Cliente 2" tiene todos los campos escribibles.
¿Cuál sería el problema? Que al seleccionar una empresa en el campo "Empresa" de "Cliente 1" se deben completar todos los campos de "Cliente 1" y asi también automáticamente los de "Cliente 2".
Este es un problema que solo me está sucediendo en IE, no en Firefox. En Firefox funciona perfectamente.
A continuación copio las clases JS y la sección del código donde están estos campos:
Clases JS:
Código:
function ajax() { this.xmlobj = function() { try { if( window.XMLHttpRequest ) { return new XMLHttpRequest(); } else if( window.ActiveXObject ) { return new ActiveXObject( "XMLHTTP" ); } } catch( e ) { alert( "Error de ajax: " + e.name + ". Desc: " + e.message ); } } this.sender = function( url, contenedor ) { try { if( url && contenedor ) { var cont = document.getElementById( contenedor ); if( !cont ) { alert( "Error, el contenedor no existe" ); } var ajax = this.xmlobj(); ajax.open( "GET", url ); ajax.onreadystatechange = function() { if( ajax.readyState == 4 ) { cont.innerHTML = ajax.responseText; } } ajax.send( null ); } else { alert( "Faltan parametros" ); } } catch( e ) { alert( "Error de envio: " + e.name + ". Desc: " + e.message ); } } this.sender_response = function( url ) { try { if( url ) { var ajax = this.xmlobj(); ajax.open( "GET", url, true ); var resp = "a"; ajax.onreadystatechasdange = function() { if( ajax.readyState == 4 ) { return resp = ajax.responseText; } } ajax.send( null ); return resp; } else { alert( "Faltan parametros" ); } } catch( e ) { alert( "Error de envio: " + e.name + ". Desc: " + e.message ); } } this.sender_eval = function( url ) { try { if( url ) { var ajax = this.xmlobj(); ajax.open( "GET", url ); ajax.onreadystatechange = function() { if( ajax.readyState == 4 ) { //cargando( 2 ); eval( ajax.responseText ); } else { //cargando( 1 ); } } ajax.send( null ); } else { alert( "Faltan parametros" ); } } catch( e ) { alert( "Error de envio: " + e.name + ". Desc: " + e.message); } } } var Ajax = new ajax(); function compConsignatario() { this.completaCampos = function( domi1, domi2, domi3, pais, tel, email, codigo ) { try { var domic1 = document.getElementById( "con_domicilio1" ); var domic2 = document.getElementById( "con_domicilio2" ); var domic3 = document.getElementById( "con_domicilio3" ); var paiss = document.getElementById( "con_pais" ); var tele = document.getElementById( "con_telefono" ); var mail = document.getElementById( "con_email" ); var codigos = document.getElementById( "con_codigo" ); domic1.value = domi1; domic2.value = domi2; domic3.value = domi3; paiss.value = pais; tele.value = tel; mail.value = email; codigos.value = codigo; } catch( e ) { alert( e.name + " - " + e.message ); } } this.enviaPeticion = function( campo ) { try { var xmlo = Ajax.xmlobj(); xmlo.open( "GET", "trae_clientext.ajax.php?buscar=" + campo.value ); xmlo.onreadystatechange = function() { if( xmlo.readyState == 4 ) { eval( xmlo.responseText ); } } xmlo.send( null ); } catch( e ) { alert( e.name + " - " + e.message ); } } this.errorTotal = function() { var tab_con = document.getElementById( 'tab_consignatario' ); var elementos = tab_con.getElementsByTagName( "input" ); for( var i = 0; i < elementos.length; i++ ) { if( elementos[i].type == "text" ) { elementos[i].value == ""; ValidaPuertos.error( elementos[i].getAttribute( "id" ) ); } } } this.validaTotal = function() { var tab_con = document.getElementById( 'tab_consignatario' ); var elementos = tab_con.getElementsByTagName( "input" ); for( var i = 0; i < elementos.length; i++ ) { if( elementos[i].type == "text" ) { elementos[i].value == ""; ValidaPuertos.validado( elementos[i].getAttribute( "id" ) ); } } } } var completaConsig = new compConsignatario();
Codigo donde se encuentran los campos:
Código:
<tr> <td colspan="3"> <table border="0" cellpadding="0" cellspacing="0" id="tab_consignatario"> <tr> <td style=""><b>CONSIGNATARIO <span class="obligatorio">(*)</span>:</b></td> </tr> <input type="hidden" name="con_codigo" id="con_codigo" /> <tr> <td style="text-align: right;"> Empresa: </td> <td> <input type="text" name="con_descripcion" id="con_descripcion" style="width: 200px;" onchange="completaConsig.enviaPeticion( this ); setTimeout( 'cNoti()', 1000 );" /> <a href="#" onclick="popUp( '<?php echo URL . "/listado_consig.php?vista_cliente=" . $_GET['vista_cliente'] ?>' ); return false;" title="Abrir listado de consignatarios"><img src="imagenes/listado.png" border="0" /></a> </td> </tr> <tr> <td style="text-align: right;"> Domicilio 1: </td> <td> <input type="text" readonly="true" name="con_domicilio1" id="con_domicilio1" style="width: 200px;" onkeyup="cNoti()" /> </td> </tr> <tr> <td style="text-align: right;"> Domicilio 2: </td> <td> <input type="text" readonly="true" name="con_domicilio2" id="con_domicilio2" style="width: 200px;" onkeyup="cNoti()" /> </td> </tr> <tr> <td style="text-align: right;"> Domicilio 3: </td> <td> <input type="text" readonly="true" name="con_domicilio3" id="con_domicilio3" style="width: 200px;" onkeyup="cNoti()" /> </td> </tr> <tr> <td style="text-align: right;"> Pais: </td> <td> <input type="text" readonly="true" name="con_pais" id="con_pais" style="width: 200px;" onkeyup="cNoti()" /> </td> </tr> <tr> <td style="text-align: right;"> Telefono: </td> <td> <input type="text" readonly="true" name="con_telefono" id="con_telefono" style="width: 200px;" onkeyup="cNoti()" /> </td> </tr> <tr> <td style="text-align: right;"> Email: </td> <td> <input type="text" readonly="true" name="con_email" id="con_email" style="width: 200px;" onkeyup="cNoti()" /> </td> <td> </td> </tr> </table> </td> </tr> <tr> <td colspan="3"> <table border="0" cellpadding="0" cellspacing="0" id="tab_notificatario"> <tr> <td style=""><b>NOTIFICATARIO:</b></td> </tr> <input type="hidden" name="not_codigo" id="not_codigo" /> <tr> <td style="text-align: right;"> Empresa: </td> <td> <input type="text" name="not_descripcion" id="not_descripcion" style="width: 200px;" /> </td> </tr> <tr> <td style="text-align: right;"> Domicilio 1: </td> <td> <input type="text" name="not_domicilio1" id="not_domicilio1" style="width: 200px;" /> </td> </tr> <tr> <td style="text-align: right;"> Domicilio 2: </td> <td> <input type="text" name="not_domicilio2" id="not_domicilio2" style="width: 200px;" /> </td> </tr> <tr> <td style="text-align: right;"> Domicilio 3: </td> <td> <input type="text" name="not_domicilio3" id="not_domicilio3" style="width: 200px;" /> </td> </tr> <tr> <td style="text-align: right;"> Pais: </td> <td> <input type="text" name="not_pais" id="not_pais" style="width: 200px;" /> </td> </tr> <tr> <td style="text-align: right;"> Telefono: </td> <td> <input type="text" name="not_telefono" id="not_telefono" style="width: 200px;" /> </td> </tr> <tr> <td style="text-align: right;"> Email: </td> <td> <input type="text" name="not_email" id="not_email" style="width: 200px;" /> </td> <td> </td> </tr> </table> </td> </tr>