Jacob .. <laessoe@yahoo.com> writes:
> OK - problemet er faktisk ikke at mine brugere (dem er der 6 af), ikke
> kan finde ud af at skrive datoen i ddmmåååå, men at de glemmer at
> seperere dem med bindestreger og det scrambler min db. Jeg har forsøgt at
> lave det i asp, men det virker ikke som jeg gerne vil have det skal gøre.
Det ville ellers være det bedste - fiks det på serveren.
> Så jeg tænkte at det måske er smartest i js - evt. at den bare checker om
> teksboksen indholder en (eller flere) bindestreger. Kan du fikse den for
> mig mon, er *totalt* grøn i js.
Prøv den her:
<script type="text/javascript">
function fixDate(inputElement) {
var value = inputElement.value;
// fjern mellemrum
value = value.replace(/\s+/g,"");
// hvis feltet er tomt, så lad være med at brokke os endnu!
if (value == "") {return;}
// test om ikke rigtigt format
if (!/^\d\d-\d\d-\d{4}$/.test(value)) {
// ej rigtigt! er det fordi streger mangler?
if (/^\d{8}$/.test(value)) {
// ja, det er otte cifre. Indsæt streger!
value = value.substr(0,2)+"-"+value.substr(2,2)+"-"+value.substr(4);
} else {
// ok, ved ikke hvad der er galt!
alert("Input er ikke en dato på formen dd-mm-åååå");
inputElement.focus();
return;
}
}
inputElement.value = value;
// test evt om datoen er lovlig:
if (!legalDate(value)) {
alert("Datoen findes ikke! Fy!");
inputElement.focus();
return;
}
}
function legalDate(str) { // str er på formen dd-mm-åååå
var parts = str.split("-");
var date = Number(parts[0]);
var mth = Number(parts[1])-1;
var year = Number(parts[2]);
var realDate = new Date(year,mth,date);
return !(realDate.getDate() != date || realDate.getMonth() != mth);
}
</script>
og
<input type="text" name="dato" onchange="fixDate(this)" value="dd-mm-åååå">
/L
--
Lasse Reichstein Nielsen - lrn@hotpop.com
DHTML Death Colors: <URL:
http://www.infimum.dk/HTML/rasterTriangleDOM.html>
'Faith without judgement merely degrades the spirit divine.'