Javascript:函数错误()消失

时间:2014-02-12 17:55:07

标签: javascript html forms

我是编程新手,我想知道为什么我的程序不起作用。我尝试提交表格。如果一个问题没有得到解答,程序必须先做警告(“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>

1 个答案:

答案 0 :(得分:1)

由于页面是提交的,因此错误不会停留,如果失败,您不会取消表单提交

onsubmit="validator();"

需要

onsubmit="return validator();"

validator需要返回true / false