我是编程新手,我想知道为什么我的程序不起作用。我尝试提交表格。如果一个问题没有得到解答,程序必须先做警告(“Sommige vragen moeten ingevuld worden!”);.然后程序必须在问题下面显示错误。当我提交表格时,一个问题保持打开(需要的那个),然后它说'Sommige vragen moeten ingevuld worden'。非常好。但错误不起作用。它出现在屏幕上然后就消失了。我希望该错误留在屏幕上,以便受访者可以纠正他的价值。纠正后,我希望表单为“true”,以便发送。
这是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>
答案 0 :(得分:1)
由于页面是提交的,因此错误不会停留,如果失败,您不会取消表单提交
onsubmit="validator();"
需要
onsubmit="return validator();"
和validator
需要返回true / false