2012-10-30 94 views
0

我正在創建一個課程註冊表單,要求用戶輸入任何期望數量的將從他或她的公司參加課程的候選人。如何根據javascript中的用戶輸入動態生成輸入字段

例如: 如果用戶在名爲「No of Candidates」的字段中輸入3,該腳本應生成3行,其中包含「Name」,「Email」,「Phone」,「Sex」和「Position」爲每個候選人的信息。

請在下面找到「候選編號」字段的html以及用於輸入每個候選人信息的字段。

請注意:要生成的字段基於用戶的輸入。即它可以是3,5,10 e.t.c

<p> 
<label><strong>No of Candidates</strong></label> 
<label><input name="cand_no" type="text" placeholder="Type Your Number of Candidates" onchange='this.form.submit()' /></label> 
    <div class="clear"></div> 
</p> 



    <div class="cand_fields"> 
    <table width="630" border="0"> 
     <tr> 
     <td>Name</td> 
     <td width="20">Sex</td> 
     <td>Email</td> 
     <td>Phone</td> 
     <td width="40">Position</td> 
     </tr> 
     <tr> 
     <td><input name="cand_name" type="text" placeholder="Name" required="required" /></td> 
     <td> 
     <select name="cand_sex" required="required"> 
     <option value=" "> </option> 
     <option value="Male">Male</option>  
     <option value="Female">Female</option> 
     </select> 
     </td> 
     <td><input name="cand_email" type="text" placeholder="Email" required="required" /></td> 
     <td><input name="cand_phone" type="text" placeholder="Phone" required="required" /></td> 
     <td><input name="cand_pos" type="text" placeholder="Position" required="required" /></td> 
     </tr> 
    </table></div> 

我用PHP試過,但它是不愉快的從服務器端做這個。所以,我真的需要它從客戶端使用JavaScript來完成。

我會很感激,如果這個可以用JavaScript來實現......

萬分感謝!

+0

我會嘗試創建一個空白的div,並根據用戶輸入的數字使用for循環追加一組表單域。 –

+0

是的,它可以通過JavaScript來完成,但能夠看到你使用該代碼有多遠會很棒。否則,看起來你只是在給某人的指示來爲你建立它。歡迎來到SO。 –

回答

0

我可能會建議您將cand_no更改爲下拉菜單,否則您將不得不驗證輸入是數字而不是文本。

然後,我會添加表格的50個版本(ack,使用divs?)和1到50的漸進ID。默認應用display:hidden,然後使用從1cand_no的javascript循環將顯示更改爲阻止。

+0

我認爲你有一個下拉的想法會非常好,然後運行一個循環來生成候選字段。但我對javascript有一點了解。如果你能幫忙,請欣賞...謝謝 – Sms

+0

有兩個假設使這項工作。 1.你創建一個帶有ID的選擇菜單cand_no 2.你圍繞必要的候選註冊領域,讓我們說divs,並使這些div有cand_no1,cand_no2等ID 然後,你可以應該能夠使用這樣的事情: '$( '#cand_no')上( '變更',函數(E){ \t \t 變種cand_no = e.target.options [e.target.selectedIndex]。價值; \t \t 爲(。 var i = 0; i Robert

1

試試這個..使用.change()事件..

我創建了一個模板類保存模板行.. 然後使用.clone()插入行到表..

$('[name="cand_no"]').on('change', function() { 
    // Not checking for Invalid input 
    if (this.value != '') { 
     var val = parseInt(this.value, 10); 

     for (var i = 0; i < val; i++) { 
      // Clone the Template 
      var $cloned = $('.template tbody').clone(); 
      // For each Candidate append the template row 
      $('#studentTable tbody').append($cloned.html()); 
     } 
    } 
});​ 

Working Fiddle

編輯

1)我剛纔命名持有一個ID的學生信息,因此,這將是很容易的目標表..

2)克隆剛剛創建的副本了問題中的元素即模板。因此,對於在輸入中輸入的條目數量,我們編寫一個for循環並將模板行添加到學生表。

3.)我只是將模板行存儲到一個單獨的div與顯示:無,這樣它就不可見在屏幕上..這只是從它複製HTML並追加到新表。

<div class="template" style="display: none"> 
    <table> 
    <tr > 
     <td><input name="cand_name" type="text" placeholder="Name" required="required" /></td> 
     <td> 
      <select name="cand_sex" required="required"> 
       <option value=" "> </option> 
       <option value="Male">Male</option> 
       <option value="Female">Female</option> 
      </select> 
     </td> 
     <td><input name="cand_email" type="text" placeholder="Email" required="required" /></td> 
     <td><input name="cand_phone" type="text" placeholder="Phone" required="required" /></td> 
     <td><input name="cand_pos" type="text" placeholder="Position" required="required" /></td> 
     </tr> 
    </table> 
</div> 
+0

如果能解釋「for」循環區域,我將不勝感激。首先,ID #studentTable在哪裏進入形式..?其次,變量$ clone,它是如何生成候選字段的形式..?第三,模板行在哪裏..?好心理解,我對JavaScript的知識很少...謝謝 – Sms

+0

我只是將模板行存儲到一個單獨的div ..參見編輯 –

+0

詞無法解釋我是多麼感激我與你的迅速回應我的問題..謝謝一堆!...但是,我已經嘗試了上面提供的jscript,但是該頁面只是在調用onchange函數後才重新加載...爲了避免我忘記了模板類和輸入的div字段爲「cand_no」都在一種形式....這可能是問題嗎? – Sms

相關問題