2010-08-23 23 views
39

¿Cómo puedo obtener el valor de un formulario HTML para pasar a JavaScript?JavaScript - Obteniendo valores de formulario HTML

¿Es esto correcto? Mi script toma dos argumentos uno del cuadro de texto, uno del cuadro desplegable.

<body> 
<form name="valform" action="" method="POST"> 

Credit Card Validation: <input type="text" id="cctextboxid" name="cctextbox"><br/> 
Card Type: <select name="cardtype" id="cardtypeid"> 
    <option value="visa">Visa</option> 
    <option value="mastercard">MasterCard</option> 
    <option value="discover">Discover</option> 
    <option value="amex">Amex</option> 
    <option value="diners">Diners Club</option> 
</select><br/> 
<input type="button" name="submit" value="Verify Credit Card" onclick="isValidCreditCard(document.getElementById('cctextboxid').value,document.getElementById('cardtypeid').value)" /> 
</body> 
+1

¿Qué quiere decir por "valor de un formulario en el código HTML" exactamente? –

Respuesta

54

HTML:

<input type="text" name="name" id="uniqueID" value="value" /> 

JS:

var nameValue = document.getElementById("uniqueID").value; 
+6

@ shorty876: ¿Lo has probado tú mismo? o_0 Esa sería una buena manera de determinar si lo hiciste bien o no. –

+0

Sí, pero solo devuelve un verdadero/falso y no estoy seguro de cómo determinar si la función incluso fue llamada. Por lo tanto puedes ayudar. – user377419

+0

Lo probé, pero 'nameValue' es el valor predeterminado y no lo que el usuario ingresó. –

-3

javascript argument significa argumento de la función javascript? Si la respuesta es Sí:

Puede escribir alguna función. Que serialice su formulario en un objeto como {"name":"value"} y luego puede pasar este objeto en su función.

20

document.forms contendrán una gran variedad de formas en su página. Puede recorrer estos formularios para encontrar la forma específica que desee.

var form = false; 
var length = document.forms.length; 
for(var i = 0; i < length; i++) { 
    if(form.id == "wanted_id") { 
     form = document.forms[i]; 
    } 
} 

Cada forma tiene una matriz de elementos que luego puede recorrer para encontrar los datos que desea. También debe ser capaz de acceder a ellos por su nombre

var wanted_value = form.someFieldName.value; 
jsFunction(wanted_value); 
8

Este es un ejemplo de W3Schools:

function myFunction() { 
    var elements = document.getElementById("myForm").elements; 
    var obj ={}; 
    for(var i = 0 ; i < elements.length ; i++){ 
     var item = elements.item(i); 
     obj[item.name] = item.value; 
    } 

    document.getElementById("demo").innerHTML = JSON.stringify(obj); 
} 

La demostración se puede encontrar here.

+3

Solo una advertencia, si alguien quiere obtener los valores seleccionados de otros tipos de entradas, como botones de opción o casillas de verificación, esto no hará lo que quiera. – Sean

8

Si desea recuperar los valores de la forma (como los que se envían utilizando un HTTP POST) que puede utilizar

JavaScript

new FormData(document.querySelector('form')) 

forma-serializar (https://code.google.com/archive/p/form-serialize/)

serialize(document.forms[0]); 

jQuery

$("form").serializeArray() 
+5

Su primer ejemplo 'FormData' en sí no hace nada ... aún necesita obtener los valores del formulario. – putvande

+1

Creo que es incorrecto. Si al inicializar FormData especifica un elemento de formulario, recuperará los valores correctamente. http://codepen.io/kevinfarrugia/pen/Wommgd –

+1

El objeto FormData no es en sí mismo el valor. Aún necesita llamar e iterar a través de 'FormData.entries() 'para recuperar los valores. Además, 'FormData.entries()' no está disponible en Safari, Explorer o Edge. https://developer.mozilla.org/en-US/docs/Web/API/FormData – dave

1
<input type="text" id="note_text" /> 

let value = document.getElementById("note_text").value; 
Cuestiones relacionadas