2016-12-31 15 views
0

我打了一下牆。用我當前的JS如何在用戶點擊「添加」時在class =「household」中輸出當前表單字段的結果?如何使用Javascript輸出HTML表單數據?

*我仍然想保留刪除功能。

我不能編輯HTML只JS。任何幫助欣然讚賞。謝謝!

HTML

<ol class="household"></ol> 
    <form> 
     <div> 
      <label>Age 
       <input type="text" name="age"> 
      </label> 
     </div> 
     <div> 
      <label>Relationship 
       <select name="rel"> 
        <option value="">---</option> 
        <option value="self">Self</option> 
        <option value="spouse">Spouse</option> 
        <option value="child">Child</option> 
        <option value="parent">Parent</option> 
        <option value="grandparent">Grandparent</option> 
        <option value="other">Other</option> 
       </select> 
      </label> 
     </div> 
     <div> 
      <label>Smoker? 
       <input type="checkbox" name="smoker"> 
      </label> 
     </div> 
     <div> 
      <button class="add">add</button> 
     </div> 
     <div> 
      <button type="submit">submit</button> 
     </div> 
    </form> 

JS

function validate(form) { 

     fail = validateAge(form.age.value) 
     fail += validateRel(form.rel.value) 

     if (fail == "") return true 
     else { 
      alert(fail); 
      return false 
     } 
    } 

    function validateAge(field) { 
     if (isNaN(field)) return "No age was entered. \n" 
     else if (field < 1 || field > 1000) 
      return "Age must be greater than 0. \n" 
     return "" 
    } 

    function validateRel(field) { 
     if (field == "") return "Please select a relationship \n" 
     return "" 

    } 


    document.querySelector("form").onsubmit = function() { 
     return validate(this) 

    } 

    document.querySelector(".add").onclick = function() { 
     createinput() 
    }; 

    count = 0; 
    function createinput() { 
     field_area = document.querySelector('.household') 
     var li = document.createElement("li"); 
     var input = document.createElement("input"); 
     input.id = 'field' + count; 
     input.name = 'field' + count; 
     input.type = "text"; //Type of field - can be any valid input type like text,file,checkbox etc. 
     li.appendChild(input); 
     field_area.appendChild(li); 
     //create the removal link 
     var removalLink = document.createElement('a'); 
     removalLink.onclick = function() { 
      this.parentNode.parentNode.removeChild(this.parentNode) 
     } 
     var removalText = document.createTextNode('Remove Field'); 
     removalLink.appendChild(removalText); 
     li.appendChild(removalLink); 
     count++ 
    } 
+0

將添加按鈕更改爲'type =「按鈕」'。默認是'type =「submit」',所以它提交表單。 – Barmar

+0

@Barmar *「我不能編輯HTML只有JS」*我意識到用戶可以改變這個使用JS,而不是通過簡單地改變HTML –

回答

0

add按鈕提交表單。您可以通過在處理函數中調用event.preventDefault()來阻止該問題。

document.querySelector(".add").onclick = function(event) { 
    event.preventDefault(); 
    createinput() 
}; 
+0

它的工作原理!戰鬥已經結束了,我需要實際顯示值而不是輸入字段。什麼是最好的方法來做到這一點? – spidey677

+0

顯示用戶添加的內容的值。 – spidey677

+0

'document.getElementById(someID).value'將獲得輸入字段的值。 – Barmar

相關問題