Pasar valor del form a javascript y viceversa

[color=#1a1a1a; font-family: 'Lucida Sans Unicode'; font-size: 13px]Hola, tengo un formulario en el cual ingreso un domicilio y con javascript la transformo en coordenadas q luego se la asigno a un campo oculto del formulario. Estuve probando varias opciones pero no logro tomar la dirección del form y enviarla a la función javascript. ¿Podrá ser que el código jsc esta en el head? Porque también probé colocarlo al final pero no anda. También probé usando un botón para que llame al transformar, pero no hay caso.
El código del transformar es:
function coordenada(){
var geocoder = new GClientGeocoder();
var domicilio=document.registro.dlio.value; 
geocoder.getLatLng(domicilio,function(point){
if(!point){ 
alert("Lugar no encontrado");
} else { 
map.setCenter(point,12);
var marca=new GMarker(map.getCenter());
marca.title="titulo de esta marca";
map.addOverlay(marca);
map.openInfoWindowHtml(marca.getPoint(), marca.title); 
map.setCenter(new GLatLng(point),2);
window.onload = function() {
document.registro.getElementById("pto").value = point;
}
});

y el html con el boton que llama a la funcion es:[/color]
[color=#1a1a1a; font-family: 'Lucida Sans Unicode'; font-size: 13px]<INPUT TYPE="button" VALUE="transformar" onClick="coordenada()"/> 
<input type='hidden' name='pto' value='unpunto' id='pto' />
Agradecería tu ayuda, gracias![/color]

1 Respuesta

Respuesta
1
La mejor forma de depurar un javascript o ver qué falla es usar el complemento de Firefox llamado Firebug. El cual te muestra que errores se cometen en Javascript e incluso permite depurar.
Dicho esto, falta que pongas cómo es el formulario pero aún así creo que la manera en que coges el campo dirección no es correcto:
var domicilio=document.registro.dlio.value;
No se puede acceder así directamente al form desde el document. Supongo que tu formulario se llama "registro". La manera más correcta (hay varias) de hacerlo sería así:
function coordenada(form){
var geocoder = new GClientGeocoder();
var domicilio= form.dlio.value;
...
y cambiando la llamada a:
coordenada(this.form)
Otra manera más rápida, sin tantos cambios (ni tener que pasar el formulario a la función):
var domicilio=document.getElementByName('dlio').value;

Algunas páginas sobre el tema:
http://www.javaworld.com/jw-06-1996/jw-06-javascript.html
http://www.javascript-coder.com/javascript-form/javascript-get-form.htm
http://www.javascript-coder.com/javascript-form/getelementbyid-form.htm
Hola de nuevo, estuve probando, cbiando código y viendo las páginas que me sugeriste. Por lo que veo mi código esta con las sentencias correctas, paso bien los datos del form a la función javascript, pero cdo le quiero asignar un valor al campo oculto "pto" no me lo asigna. ¿Podes mirar el código y fijarte si hay algún error? Probé con el debug que me aconsejaste y este no me larga errores( o sea al principio si pero ya no). Te pego el código por si lo podes ver, te lo agradecería en el alma!
function initialize() {
if (GBrowserIsCompatible()) {
var map = new GMap2(document.getElementById("map_canvas"));
map.setCenter(new GLatLng(-31.535238, -68.512115), 11);
}}
function coordenada(registro){
var geocoder = new GClientGeocoder();
var domicilio=registro.dlio.value;
geocoder.getLatLng(domicilio,function(point){
if(!point){
alert("Lugar no encontrado");
} else {
var x=point.x;
var y=point.y;
}
});
//window.onload = function() {
// registro.getElementById('pto').value = x;
//}
registro.getElementById("pto").value = x;
}
</script>
</head>
<body onLoad="initialize()" onUnload="GUnload()">
<div id="map_canvas" style="width: 500px; height: 300px"></div>
<p> </p>
<FORM METHOD="GET" name="registro" ACTION="altaprueba.php" >
<fieldset>
<legend></legend>
<p><span class="Estilo2"><span class="Estilo3">Agregar</span> nuevo propietario </span> </p>
<p align="center"><img src="images/center_box_bg.gif" width="257" height="10" /> </p>
<p> </p>
<table border = '0' align="center" bordercolor="#CCCCCC">
<tr>
<td><label>Nombre y Apellido : </label></td>
<td><input name='nom' type='text' class='input' id='nom' size='40' maxlength='100' /></td>
</tr>
<tr>
<td><label>Domicilio : </label></td>
<td><input type='text' name='dlio' maxlength='100' size='40' class='input' id='dlio' /></td>
</tr>
<tr>
<td><label>Telefono: </label></td>
<td><input name='tel' type='text' class='input' id='tel' size='40' maxlength='100' /></td>
<tr>
<td><label>Mail : </label></td>
<td><input name='mail' type='text' class='input' id='mail' size='40' maxlength='100' /></td>
</tr>
</table>
</tr>
<tr>
<input name='pto' type='hidden' id='pto' />
</tr>
<INPUT TYPE="button" VALUE="transformar" onClick="coordenada(this.form)"/>
<p> </p>
<div align="right">
<p>
<input class=button type=submit value=Guardar name='submit' />
</p>
</div>
<p> </p>
</fieldset>
</form>
</body>
</html>
Haces esto:
registro.getElementById("pto").value = x;
Cuando la función "getElementById" sólo se usa con el objeto "document". Registro es el objeto form que le has pasado a la función. Prueba así:
document.getElementById("pto").value = x;
o así:
registro.pto.value = x;

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas