2010-08-23 7 views
39

Comment puis-je transmettre la valeur d'un formulaire HTML à JavaScript?JavaScript - Obtention de valeurs de formulaire HTML

Est-ce correct? Mon script prend deux arguments un de la zone de texte, un de la liste déroulante.

<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

Que voulez-vous dire par "valeur d'une forme dans le code HTML" exactement? –

Répondre

54

HTML:

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

JS:

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

@ shorty876: L'avez-vous testé vous-même? o_0 Ce serait un très bon moyen de déterminer si vous l'avez fait correctement. –

+0

Oui, mais il retourne juste un vrai/faux et je ne sais pas comment déterminer si la fonction a même été appelée. Ainsi vous pouvez aider. – user377419

+0

J'ai essayé, mais 'nameValue' est la valeur par défaut et non ce que l'utilisateur a saisi. –

-3

argument javascript signifie argument de fonction javascript? Si oui:

Vous pouvez écrire une fonction. Qui sérialiser votre formulaire dans l'objet comme {"name":"value"} et ensuite vous pouvez passer cet objet en fonction.

20

document.forms contiendra un tableau de formulaires sur votre page. Vous pouvez parcourir ces formulaires pour trouver la forme spécifique que vous désirez. Chaque formulaire a un tableau d'éléments que vous pouvez ensuite parcourir pour trouver les données que vous voulez. Vous devez également être en mesure d'y accéder par son nom

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

Voici un exemple 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 démo se trouve here.

+3

Juste un avertissement, si quelqu'un veut obtenir les valeurs sélectionnées d'autres types d'entrées telles que les boutons radio ou les cases à cocher, cela ne fera pas ce que vous voulez. – Sean

8

Si vous voulez récupérer les valeurs de forme (tels que ceux qui seraient envoyés à l'aide d'un HTTP POST) vous pouvez utiliser

JavaScript

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

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

serialize(document.forms[0]); 

jQuery

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

Votre premier exemple 'FormData' lui-même ne fait rien. Vous devez toujours obtenir les valeurs du formulaire. – putvande

+1

Je crois que c'est incorrect. Si lors de l'initialisation de FormData vous spécifiez un élément de formulaire, il récupérera correctement les valeurs. http://codepen.io/kevinfarrugia/pen/Wommgd –

+1

L'objet FormData n'est cependant pas lui-même les valeurs. Vous devez toujours appeler et itérer via 'FormData.entries() 'pour récupérer les valeurs. En outre, 'FormData.entries()' n'est pas disponible dans Safari, Explorer ou 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; 
Questions connexes