2011-10-10 14 views
22

Tengo una función JavaScript genérico que toma un parámetroCómo pasar un valor formulario de entrada en una función de JavaScript

function foo(val) { ...} 

y quiero llamar a la función cuando enviar un formulario

<form> 
<input type="text" id="formValueId"/> 
<input type="button" onclick="foo(this.formValueId)"/> 
</form> 

pero la expresión foo (this.formValueId) no funciona (no me sorprendió, fue un intento desesperado), Entonces la pregunta es, ¿cómo puedo pasar un valor de formulario a la función javascript. Como mencioné, el javascript es genérico y no quiero manipular el formulario que contiene.

Podría crear una función de ayuda en el medio para obtener los valores de formulario con jQuery (por ejemplo) y luego llamar a la función, pero me preguntaba si puedo hacerlo sin la función de ayuda.

+1

Tenga en cuenta que es posible enviar este formulario presionando Enter en el campo de texto (aunque no en IE) y no se activará el clic de su botón. –

+0

Esta puede ser tu respuesta. demo: http://jsbin.com/icikav/5/edit#javascript,html El método al que intenta llamar no está definido. – funerr

Respuesta

21

Podría ser más limpio para sacar el controlador de línea clic y hacerlo de esta manera:

$(document).ready(function() { 
    $('#button-id').click(function() { 
     foo($('#formValueId').val()); 
    }); 
}); 
17

Dé a sus entradas de nombres que hará que sea más fácil

<form> 
<input type="text" id="formValueId" name="valueId"/> 
<input type="button" onclick="foo(this.form.valueId.value)"/> 
</form> 

ACTUALIZACIÓN:

Si indica su botón de un ID cosas pueden ser aún más fácil:

<form> 
<input type="text" id="formValueId" name="valueId"/> 
<input type="button" id="theButton"/> 
</form> 

Javascript:

var button = document.getElementById("theButton"), 
value = button.form.valueId.value; 
button.onclick = function() { 
    foo(value); 
} 
+0

en lugar de 'onclick =" foo (this.form.valueId.value) '' podemos usar 'onclick =" foo (valueId.value) ''. funciona ... – nav3916872

5

Uso onclick="foo(document.getElementById('formValueId').value)"

6

Hay varias maneras de abordar esto. Personalmente, lo haría avoid in-line scripting. Como ha etiquetado jQuery, usemos eso.

HTML:

<form> 
    <input type="text" id="formValueId" name="valueId"/> 
    <input type="button" id="myButton" /> 
</form> 

JavaScript:

$(document).ready(function() { 
    $('#myButton').click(function() { 
     foo($('#formValueId').val()); 
    }); 
}); 
1

enfoque más estable:

<form onsubmit="foo($("#formValueId").val());return false;"> 
<input type="text" id="formValueId"/> 
<input type="submit" value="Text on the button"/> 
</form> 

El return false; es impedir forma real presentara (suponiendo que w hormiga que).

2

Bueno, puedes hacerlo de esta manera.

<input type="text" name="address" id="address"> 
     <div id="map_canvas" style="width: 500px; height: 300px"></div> 
    <input type="button" onclick="showAddress(address.value)" value="ShowMap"/> 

Java Script

function showAddress(address){ 

    alert("This is address :"+address) 

} 

Eso es un ejemplo de la misma. y eso correrá

+0

por favor agregue el script java también – Lijo

+0

okey solo min déjenme agregar. – Krishna

Cuestiones relacionadas