2017-05-30 11 views
0

我真的很新的HTML,JavaScript,只是想知道如何檢查我的fieldset內的輸入字段是否由用戶完成,如果是這樣fieldset崩潰到它的傳說。下面我創建了腳本將fieldset摺疊到圖例中,我只需創建驗證腳本,但我不知道如何創建它。驗證輸入比關閉div一旦填寫

function doit2() { 
 
    if (document.getElementById('two').style.display == 'none') { 
 
    document.getElementById('two').style.display = 'block'; 
 
    } else { 
 
    document.getElementById('two').style.display = 'none'; 
 
    } 
 
}
<fieldset> 
 
    <legend><a href="#" onclick="doit2()">Personal details</a></legend> 
 
    <div id="two"> 
 
    <div> 
 
     <label>Surname or family name:</label> 
 
     <input type="text" name="personal" /> 
 
    </div> 
 
    <div> 
 
     <label>Given name/names:</label> 
 
     <input type="text" name="personal" /> 
 
    </div> 
 
    <div> 
 
     <label> Date of birth:</label> 
 
     <input type="date" name="personal" /> 
 
    </div> 
 
    <div> 
 
     <label> Male </label> 
 
     <input type="radio" name="gender" value="Male" /> 
 
    </div> 
 
    <div> 
 
     <label> Female </label> 
 
     <input type="radio" name="gender" value="Female" /> 
 
    </div> 
 
    <div> 
 
     <label> N/A </label> 
 
     <input type="radio" name="gender" value="NA" /> 
 
    </div> 
 
    </div> 
 
</fieldset>

回答

0

試試這個:

function validateForm() 
 
{ 
 
    debugger; 
 
    var fields = ["surname", "name", "dob"] 
 
    var i, l = fields.length; 
 
    var fieldname; 
 
    for (i = 0; i < l; i++) { 
 
    fieldname = fields[i]; 
 
    if (document.getElementsByName(fieldname)[0].value === "") { 
 
     alert(fieldname + " can not be empty"); 
 
     return false; 
 
    } 
 
    } 
 
    return true; 
 
} 
 
function doit2() { 
 
    
 
    if(document.getElementById('two').style.display == 'none'){ 
 
     document.getElementById('two').style.display = 'block'; 
 
    } else { 
 
     
 
     if(validateForm()){ 
 
     document.getElementById('two').style.display = 'none'; 
 
     } 
 
    } 
 
}
<fieldset id="fieldset"> 
 
    <legend><a href="#" onclick="doit2()">Personal details</a></legend> 
 
    <div id="two"> 
 
     <div> 
 
      <label>Surname or family name:</label> 
 
      <input type="text" name="surname"/> 
 
     </div> 
 
     <div> 
 
      <label>Given name/names:</label> 
 
      <input type="text" name="name"/> 
 
     </div> 
 
     <div> 
 
      <label> Date of birth:</label> 
 
      <input type="date" name="dob"/> 
 
     </div> 
 
     <div> 
 
      <label> Male </label> 
 
      <input type="radio" name="gender" value="Male" checked/> 
 
     </div> 
 
     <div> 
 
      <label> Female </label> 
 
      <input type="radio" name="gender" value="Female"/> 
 
     </div> 
 
     <div> 
 
      <label> N/A </label> 
 
      <input type="radio" name="gender" value="NA"/> 
 
     </div> 
 
    </div> 
 
</fieldset>

+0

我有一種感覺,字段集不會因爲單選按鈕而關閉? –

+0

填充所有文本框字段併爲其工作後,字段集將關閉 –

+0

有沒有辦法在用戶填寫完所有內容後自動關閉字段集? –

0

在驗證的第一步,你需要添加到輸入標籤內的每個輸入required。如果你使用默認驗證,你可以保持原樣,其他方面你可以使用正則表達式。如果宇決定使用任何框架 - 引導,角 - 他們有自己的驗證以及

+0

這是否適用於所有瀏覽器? – jkw4703

+0

是的,驗證不是瀏覽器特定的,您可以始終檢查caniuse網站。當然很老的瀏覽器不會支持它,但他們不會支持HTML5或者 –

0

您可以使用document.getElementById("[id of element]").valuedocument.getElementsByName("[Name of element]").value讓您的輸入值和驗證them.for你的情況下,你可以使用document.getElementsByName篩選:

function validate() { 
 
    if (document.getElementsByName('personal')[0].value.length == 0) { 
 
    //set error 
 
    alert('error'); 
 
    return false; 
 
    } 
 
    //Add other validation here 
 
    return true; 
 
} 
 
//.... 
 
function doit2() { 
 
    if (validate()) { 
 
    if (document.getElementById('two').style.display == 'none') { 
 
     document.getElementById('two').style.display = 'block'; 
 
    } else { 
 
     document.getElementById('two').style.display = 'none'; 
 
    } 
 
    } 
 
}
<fieldset> 
 
    <legend><a href="#" onclick="doit2()">Personal details</a></legend> 
 
    <div id="two"> 
 
    <div> 
 
     <label>Surname or family name:</label> 
 
     <input type="text" name="personal" /> 
 
    </div> 
 
    </div> 
 
</fieldset>

+0

,但是如何首先檢查是否所有輸入都已填充,而不是運行我的小腳本?你能給我一個單一輸入的基本例子嗎?感謝所有的幫助! –

+0

@JackYouitt我完成了我的代碼,只要你想 –