Forum Moderators: open
<form action="index.php?id=5" method="post">
Date: <input type="text" name="date" id="date" value="<?php echo $water["date"]; ?>" /><br/>
Alkalinity: <input type="text" name="alkalinity" id="alkalinity" value="<?php echo $water["alkalinity"]; ?>" /><br/>
<input type="submit" name="submit_edit" value="Submit" />
</form>
I would think you could use a RegExp to validate the date. Something like:
myString.match(/^\d{4}-\d{2}-\d{2}$/);
I think that would work, but I haven't tested it. In that example, myString would contain the date value you wanted to test and it would return true if the value matched yyyy-mm-dd. However, that example doesn't validate that mm isn't greater than 12, etc. In other words, this would still validate:
9999-99-99
But maybe that will get you started. :)
Of course, that's if the used a '-' as a separator! What if they entered yyyy/mm/dd?
I prefer to use this, that way the user can enter either and it'll still work. This will change '/' to '-' first:
myString.replace( /\//, "-");
if( !(myString.match(/^\d{4}-\d{2}-\d{2}$/)) {
// return with error
}
Then you'd have to split the string:
myYMD = myString.split( "-");
An easy way of checking if the date is valid is trying to set the date you're given, then seeing if it's the same. If the date is invalid the Date function will 'wrap' it to the correct day/month. e.g., if you try to set the 40th of Jan, it will wrap to 9th Feb.
So:
// Bear in mind that months start at 0
myYMD[1]--;
myDate = new Date( myYMD[0], myYMD[1], myYMD[2]);
if( myDate.getFullYear() != myYMD[0]
&& myDate.getMonth() != myYMD[1]
&& myDate.getDate() != myYMD[2]) {
// date entered was invalid!
}