2014-02-12 40 views
-1

我是編程新手,我想知道爲什麼我的程序無法正常工作。我嘗試提交表單。如果問題沒有得到解答,該計劃必須首先提醒(「Sommige vragen moeten ingevuld worden!」)。然後程序必須在問題下面顯示一個錯誤。當我提交一個問題的時候(需要的問題),那麼它會提示「Sommige vragen moeten ingevuld worden'。那很好。但錯誤不起作用。它出現在屏幕上,然後消失。我想讓這個錯誤留在屏幕上,讓受訪者可以糾正他的價值。在糾正之後,我希望表單是「真實的」,以便發送。Javascript:函數錯誤()消失

這是JavaScript文件:

var genderMale = document.getElementById('genderMale'); 
var genderFemale = document.getElementById('genderFemale'); 
var work1 = document.getElementById('work1'); 
var work2 = document.getElementById('work2'); 
var work3 = document.getElementById('work3'); 
var work4 = document.getElementById('work4'); 
var work5 = document.getElementById('work5'); 
var use1 = document.getElementById('use1'); 
var use2 = document.getElementById('use2'); 
var use3 = document.getElementById('use3'); 
var use4 = document.getElementById('use4'); 
var use5 = document.getElementById('use5'); 
var ysm = document.getElementById('ysm'); 
var nsm = document.getElementById('nsm'); 
var digital1 = document.getElementById('digital1'); 
var digital2 = document.getElementById('digital2'); 
var digital3 = document.getElementById('digital3'); 
var ingevuld = true; 



function required(){ 
if((!genderMale.checked) && (!genderFemale.checked)){    
    ingevuld = false; 
} 

var x = document.getElementById('age').value;       
if (x<21 || x>100 || x==""){            
    ingevuld = false; 
} 

if((!work1.checked) && (!work2.checked) && (!work3.checked) && (!work4.checked) && (!work5.checked)){ 
    ingevuld = false;            
} 

if((!use1.checked) && (!use2.checked) && (!use3.checked) && (!use4.checked) && (!use5.checked)){  
    ingevuld= false;  
} 

if((!ysm.checked) && (!nsm.checked)){   
    ingevuld = false; 
} 

if((!digital1.checked) && (!digital2.checked) && (!digital3.checked)){   
    ingevuld = false; 
} 

if(!ingevuld){                  
    alert("Sommige vragen moeten ingevuld worden!"); 
} else{ 
    window.open("confirm.html"); 
    window.close("Gebruikersonderzoek_medici.html"); 
} 

} 

var error1=document.getElementById("question1"); 
var error2=document.getElementById("question2"); 
function error(){ 
error1.innerHTML=""; 
    try{ 
     if(!genderMale.checked && !genderFemale.checked) throw "vink een van de opties aan"; 
    } 
    catch(err){ 
    error1.innerHTML="Deze vraag is vereist: " + err + "."; 
    } 


var x = document.getElementById('age').value; 
error2.innerHTML=""; 
    try{ 
     if(x=="")  throw "vul een cijfer in"; 
     if(isNaN(x)) throw "vul een cijfer in"; 
     if(x>67)  throw "te hoog cijfer"; 
     if(x<21)  throw "te laag cijfer"; 
    } 
    catch(err){ 
    error2.innerHTML="Deze vraag is vereist: " + err + "."; 
    } 

} 


function validator(){ 
required(); 
error(); 
} 

這是HTML文件:

<title>Gebruikersonderzoek medici</title> 

<head> 
<link rel="stylesheet" type="text/css" href="meesterproef.css"> 
</head> 


<body> 

<h1>Elektronische medicijnkaart</h1> 

    <form name="meertenenquete" id="submit1" onsubmit="validator();" target="_self"> 
     <p class="margin">*1. Wat is uw geslacht?</p>                                  
      <input id="genderMale" type="radio" name="gender" value="male">Man<br> 
      <input id="genderFemale" type="radio" name="gender" value="female">Vrouw<br><br> 
       <div class="error" id="question1"></div> 

     <p>*2. Wat is uw leeftijd (in cijfers)?</p>                             
      <input id="age" type="number" min=21 max=67> jaar<br> 
       <div class="error" id="question2"></div> 

     <p>3. Welke van de volgende opties beschrijft het best uw beroep?</p>                      
      <select id="job"> 
       <option value="kiesuit">Kies uit...</option> 
       <option value="huisarts">Huisarts</option> 
       <option value="bedrijfsarts">Bedrijfsarts</option> 
       <option value="anesthesioloog">Anesthesioloog</option> 
       <option value="anesthesiemedewerker">Anesthesiemedewerker</option> 
       <option value="apotheker">Apotheker</option> 
       <option value="apothekersassistent">Apothekersassistent</option> 
       <option value="chirurg">Chirurg</option> 
       <option value="verpleegkundige">Verpleegkundige</option> 
       <option value="dermatoloog">Dermatoloog</option> 
       <option value="cardioloog">Cardioloog</option> 
       <option value="gynaecoloog">Gynaecoloog</option> 
       <option value="longarts">Longarts</option> 
       <option value="geriater">Geriater</option> 
       <option value="internist">Internist</option> 
       <option value="kinderarts">Kinderarts</option> 
       <option value="orthopeed">Orthopeed</option> 
      </select><br><br> 
      Iets anders namelijk: <input type="text" name="alternative" size="75"><br> 

     <p>*4. Hoe lang oefent u uw beroep uit in de gezondheidszorg?</p>                       
     <input id="work1" type="radio" name="work" value="5year">Minder dan 5 jaar<br> 
     <input id="work2" type="radio" name="work" value="15year">Tussen de 5 en 15 jaar<br> 
     <input id="work3" type="radio" name="work" value="30year">Tussen de 15 en 30 jaar<br> 
     <input id="work4" type="radio" name="work" value="40year">Tussen de 30 en 40 jaar<br> 
     <input id="work5" type="radio" name="work" value="moreyear">Meer dan 40 jaar<br> 

      <p>*5. Hoe vaak gebruikt u een medicijnkaart in uw functie?</p>                        
     <input id="use1" type="radio" name="use" value="countyear">Een aantal keer per jaar<br> 
     <input id="use2" type="radio" name="use" value="countmaand">Een aantal keer per maand<br> 
     <input id="use3" type="radio" name="use" value="countweek">Een aantal keer per week<br> 
     <input id="use4" type="radio" name="use" value="countday">Een aantal keer per dag<br> 
    <input id="use5" type="radio" name="use" value="countno">Ik maak geen gebruik van dat<br> 

     <p>6. Wat zijn de voor- en nadelen van de huidige papieren medicijnkaart?</p>                    
      Voordelen: <br><textarea name="advantage" rows="3" cols="100"></textarea><br> 
      Nadelen: <br><textarea name="disadvantage" rows="3" cols="100"></textarea><br> 

     <p>*7. Gebruikt u een smartphone en/of tablet op het werk</p>                        
      <input id="ysm" type="radio" name="smtb" value="yes">Ja<br> 
      <input id="nsm" type="radio" name="smtb" value="no">Nee (vraag 8 overslaan)<br> 

        <p>8. Op welke van de onderstaande besturingssystemen? (meerdere opties mogelijk)</p>          
      <input type="checkbox" name="opsystem" value="android">Android<br> 
      <input type="checkbox" name="opsystem" value="windowsphone">Windows Phone<br> 
      <input type="checkbox" name="opsystem" value="ios">IOS (Apple)<br><br> 
      Anders, namelijk: <input type="text" name="alternative" size="75"><br> 

     <p>9. Zou het prettig zijn wanneer een medicijnkaart toegankelijk is via de werkplek?</p>  
      <input type="radio" name="access" value="yes">Ja<br> 
      <input type="radio" name="access" value="no">Nee<br> 

    <p>*10. Als er een digitale versie komt van een medicijnkaart, gaat u hem dan gebruiken? </p>                
    <input id="digital1" type="radio" name="digital" value="absolutelynot">Absoluut niet<br> 
    <input id="digital2" type="radio" name="digital" value="dontknow">Ik weet het niet<br> 
    <input id="digital3" type="radio" name="digital" value="probably">Zeer waarschijnlijk wel<br><br> 
    Indien niet, waarom niet?<br> 
    <textarea name="whynot" rows="3" cols="100"></textarea><br> 

     <br><input type="submit" value="Verzenden"/> 
    </form> 

    <script type="text/javascript" src="meesterproef.js"> 
    </script> 

     <p class="asterisk">* Deze vragen zijn vereist!</p> 

</body> 

</html> 

回答

1

的錯誤不會留下來,因爲頁面是submittion,你是不是取消表單提交如果失敗

onsubmit="validator();" 

需要爲

onsubmit="return validator();" 

validator需要返回真/假

+0

我想通了。我有onsubmit = validator();返回false; – user3302792