2016-02-28 102 views
-2

你好我想創建一個動態的輸入字段數字使用HTML表單提交和javascript動態輸入。javascript和html格式的動態輸入

HTML表單

<form action="" method="post" name="detParameterForm"> 
<fieldset class="det"> 
<legend>Closure Level</legend> 
Number of members:<input type="text" id="member" name="member" value=""><br /> 
<button id="btn" onclick="addinputFields()">Button</button> 
<div id="container"/> 
</fieldset> 
<button type="submit" value="Submit">submit</button> 
</form> 

在JavaScript

function addinputFields(){ 
    var number = document.getElementById("member").value; 
    for (i=0;i<number;i++){ 
     var input = document.createElement("input"); 
     input.type = "text"; 
     container.appendChild(input); 
     container.appendChild(document.createElement("br")); 
    } 
} 

但不行我把錯誤 fiddle

+1

您的jsfiddle不匹配的問題......能否請你解釋** 「但沒有工作,我採取的錯誤」 ** – NewToJS

+0

的jsfiddle http://jsfiddle.net/aaki/hMJEy/1 /似乎與問題中有不同的'js'? – guest271314

+0

@ guest271314不,我不想要這個 – user27818

回答

0

首先,你應該得到的容器對象。然後使用變量容器appendChild喚醒。並且它可以工作

+0

我不明白你我是新手 – user27818

0

單擊一個button元素後代form家長將提交form。嘗試替代span元素button和造型span顯示爲button,以防止提交formclick事件

function addinputFields() { 
 
    var number = document.getElementById("member").value; 
 
    for (i = 0; i < number; i++) { 
 
    var input = document.createElement("input"); 
 
    input.type = "text"; 
 
    container.appendChild(input); 
 
    container.appendChild(document.createElement("br")); 
 
    } 
 
}
form span { 
 
    appearance: button; 
 
    -moz-appearance: button; 
 
    -webkit-appearance: button; 
 
    padding:2px; 
 
}
<form action="" method="post" name="detParameterForm"> 
 
    <fieldset class="det"> 
 
    <legend>Closure Level</legend> 
 
    Number of members: 
 
    <input type="text" id="member" name="member" value=""> 
 
    <br /> 
 
    <span id="btn" onclick="addinputFields()">Button</span> 
 
    <div id="container" /> 
 
    </fieldset> 
 
    <button type="submit" value="Submit">submit</button> 
 
</form>

+0

但是,爲什麼樣式東西看起來像一個按鈕,當你可以使用一個實際的按鈕和event.preventDefault();'? onclick屬性只在'button'上不在提交按鈕上... – NewToJS

1

我添加註釋到更新的源代碼,這應該找到您。

變化:event.preventDefault();parseInt()使用。

function addinputFields(){ 
 
    // Disable Default Action (Form Posting) 
 
    event.preventDefault(); 
 
    // parseInt() - The value entered should be a number/integer 
 
    var number = parseInt(document.getElementById("member").value); 
 
    for (i=0;i<number;i++){ 
 
     var input = document.createElement("input"); 
 
     input.type = "text"; 
 
     container.appendChild(input); 
 
     container.appendChild(document.createElement("br")); 
 
    } 
 
}
<form action="" method="post" name="detParameterForm"> 
 
<fieldset class="det"> 
 
<legend>Closure Level</legend> 
 
Number of members:<input type="text" id="member" name="member" value=""><br /> 
 
<button id="btn" onclick="addinputFields()">Button</button> 
 
<div id="container"/> 
 
</fieldset> 
 
<button type="submit" value="Submit">submit</button> 
 
</form>

如果您對源代碼的任何問題,上述請在下面發表評論,我會盡快回復。

我希望這會有所幫助。快樂的編碼!

CodePen

+0

非常感謝您,但是如果將您的代碼複製粘貼到小提琴中,那麼您的代碼就不能工作 – user27818

+0

@ guest271314因爲您已將我的答案與您自己的答案混合在一起。你不需要'event.preventDefault(); '在你的答案中,因爲你有一個按鈕的跨度樣式,跨度不會觸發表單提交。如果你想嘗試將我的答案和你自己的答案結合起來,至少要在理解我的答案之前先嚐試將其融入你自己的答案。 – NewToJS

+0

@hellas在本地運行html文件。在jsfiddle上使用表單不是一個好主意。 – NewToJS