2010-08-23 112 views
39

如何獲取HTML表單的值以傳遞給JavaScript?JavaScript - 獲取HTML表單值

這是正確的嗎?我的腳本從文本框中獲取兩個參數,一個從下拉框中獲取。

<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

你說的正是「在HTML代碼的形式價值」呢? – 2010-08-23 11:24:28

回答

54

HTML:

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

JS:

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

@ shorty876:你自己測試過嗎? o_0這是確定你是否做得對的一個很好的方法。 – 2010-08-23 11:46:54

+0

是的,但它只是返回一個真/假,我不知道如何確定函數是否被調用。因此你可以提供幫助。 – user377419 2010-08-23 13:00:21

+0

我試過了,但'nameValue'是默認值,而不是用戶輸入的內容。 – 2017-12-12 20:54:09

-3

javascript參數表示javascript函數參數嗎?如果是:

你可以寫一些函數。它將對象序列化爲對象,如{"name":"value"},接下來您可以在函數中傳遞此對象。

20

document.forms將包含的形式向網頁上的陣列。您可以循環瀏覽這些表單以找到您想要的特定表單。

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

每種形態都有一個元素數組,然後您可以遍歷找到你想要的數據。你也應該能夠通過名字

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

這裏來訪問它們是從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); 
} 

演示可以發現here

+3

只是一個警告,如果任何人想要得到其他類型的輸入,如單選按鈕或複選框的選定值,這將不會做你想要的。 – Sean 2016-11-23 05:59:31

8

如果你想獲取表單值(例如那些將使用HTTP POST發送),你可以使用

的JavaScript

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

形式的序列化(https://code.google.com/archive/p/form-serialize/

serialize(document.forms[0]); 

jQuery

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

您的第一個示例'FormData'本身不會執行任何操作..您仍然需要從窗體中獲取值。 – putvande 2016-12-21 12:39:27

+1

我認爲這是不正確的。如果在初始化FormData時指定了一個表單元素,那麼它將正確地檢索這些值。 http://codepen.io/kevinfarrugia/pen/Wommgd – 2016-12-21 13:34:42

+1

儘管FormData對象本身不是數值。你仍然需要調用並遍歷FormData。entries()'爲了檢索值。另外,'FormData.entries()'在Safari,Explorer或Edge中不可用。 https://developer.mozilla.org/en-US/docs/Web/API/FormData – dave 2017-10-11 21:08:33

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

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