/* Detta script finns att hämta på [url]http://www.jojoxx.net[/url] och
får användas fritt så länge som dessa rader står kvar. */
function jxValidateDate(date){
var year = date.substring(0,4);
var month = date.substring(5,7);
var day = date.substring(8,10);
if (jxTimeValidateDec(year) && jxTimeValidateDec(month) && jxTimeValidateDec(day) && date.length == 10) {
var months = new Array(31,28,31,30,31,30,31,31,30,31,30,31);
if (parseInt(year/4)*4 == year) { months[1] = 29 }
if (parseInt(year/100)*100 == year) { months[1] = 28 }
if (parseInt(year/400)*400 == year) { months[1] = 29 }
if (jxTimeCheckInterval(month, 1, 12) && jxTimeCheckInterval(day, 1, months[parseInt(month)-1]) && date.substring(4,5) == "-" && date.substring(7,8) == "-"){
return true;
} else {
return false;
}
} else {
return false;
}
}
Hur testar jag att ett fält verkligen innehåller ett datum. Försöker använda mig av kombinationen av skriptet ovan och JoJoxxx validateForm funktion nedan:
function validateForm(){
if (document.Updateform1.FormDatum.value=="") {
alert("You must enter a DATE.");
return false;
} else if ((jxValidateDate(document.Updateform1.FormDatum.value) = true)){
alert("Jippie")
return false;
} else if (document.Updateform1.FormKontor.value=="") {
alert("You must enter a OFFICE.");
return false;
} else if (document.Updateform1.FormRubrik.value=="") {
alert("You must enter a HEADLINE.");
return false;
} else if (document.Updateform1.FormAuthor.value=="") {
alert("You must enter a AUTHOR.");
return false;
} else {
alert("Submit is OK!");
return true;
}
}
Den sista funktionen smäller. Misstänker att man inte får skriva så här: ((jxValidateDate(document.Updateform1.FormDatum.value) = true)){
Du är helt på rätt väg. Funktionen returnerar true/false beroende på om datumet är rätt eller inte. Du behöver alltså inte göra ytterligare en jämförelse hurvida det är sant eller inte (jämförelse definieras f.ö. med == medans tilldelning definieras med =) :)
Sedan slänger vi in ett logiskt "icke" (!) eftersom du kollar om datumet INTE är rätt.
} else if (!jxValidateDate(document.Updateform1.FormDatum.value)){
<script type="text/javascript">
/* Detta script finns att hämta på [url]http://www.jojoxx.net[/url] och
får användas fritt så länge som dessa rader står kvar. */
function jxValidateDate(date){
var year = date.substring(0,4);
var month = date.substring(5,7);
var day = date.substring(8,10);
if (jxTimeValidateDec(year) && jxTimeValidateDec(month) && jxTimeValidateDec(day) && date.length == 10) {
var months = new Array(31,28,31,30,31,30,31,31,30,31,30,31);
if (parseInt(year/4)*4 == year) { months[1] = 29 }
if (parseInt(year/100)*100 == year) { months[1] = 28 }
if (parseInt(year/400)*400 == year) { months[1] = 29 }
if (jxTimeCheckInterval(month, 1, 12) && jxTimeCheckInterval(day, 1, months[parseInt(month)-1]) && date.substring(4,5) == "-" && date.substring(7,8) == "-"){
return true;
} else {
return false;
}
} else {
return false;
}
}
function validateForm(){
if (document.Updateform1.FormDatum.value=="") {
alert("You must enter a DATE.");
return false;
} else if (!jxValidateDate(document.Updateform1.FormDatum.value)){
alert ("NOT a valid date. Use YYYY-MM-DD.")
} else if (document.Updateform1.FormKontor.value=="") {
alert("You must enter a OFFICE.");
return false;
} else if (document.Updateform1.FormRubrik.value=="") {
alert("You must enter a HEADLINE.");
return false;
} else if (document.Updateform1.FormAuthor.value=="") {
alert("You must enter a AUTHOR.");
return false;
} else {
alert("THANK YOU\nSubmit is OK!");
return true;
}
}
När jag kör ovan så smäller det på if (jxTimeValidateDec(year) && jxTimeValidateDec(month) && jxTimeValidateDec(day) && date.length == 10) {
Ursäkta, jag tittade inte så noga på det första inlägget. Funktioner kommer från ett gammalt biblitoket och det saknar en annan funktion från samma bibliotek. Ta denna funktion istället;
function jxValidateDate(str){
if(str.length!=10||str.lastIndexOf('-')!=7||str.indexOf('-')!=4){return false;}
var a=new Array(); a=str.split(/-/); var months=new Array(31,28,31,30,31,30,31,31,30,31,30,31);
for(var n=0;n<a.length;n++){for(var nn=0;nn<a[n].length;nn++){if("0123456789".indexOf(a[n].substring(nn,nn+1))<0){return false;}}}
if(parseInt(a[0])%4==0&&parseInt(a[0])%100!=0||parseInt(a[0])%400==0){months[1]=29;}
if(parseInt(a[1])>12||parseInt(a[1])==0||parseInt(a[2])>months[parseInt(a[1])-1]||parseInt(a[2])==0){return false;}
return true;
}