hallo,
ich habe für eine größere sache ein kleines testscript zusammengeschrieben.
das ganze soll wie folgt funktionieren:
wenn man per maus oder per tab-taste das Feld 2 verläßt wird auf ein engl.Datum geprüft. (prüfung noch bissl buggy aber geht!).
sollte die Prüfung negativ ausfallen soll das Feld 2 gelscht werden und der Cursor wieder in das Feld gesetzt werden.
Löschen geht, aber focus nicht.
Kann mir jemand weiterhelfen wieso?
hier der quellcode:
ich habe für eine größere sache ein kleines testscript zusammengeschrieben.
das ganze soll wie folgt funktionieren:
wenn man per maus oder per tab-taste das Feld 2 verläßt wird auf ein engl.Datum geprüft. (prüfung noch bissl buggy aber geht!).
sollte die Prüfung negativ ausfallen soll das Feld 2 gelscht werden und der Cursor wieder in das Feld gesetzt werden.
Löschen geht, aber focus nicht.
Kann mir jemand weiterhelfen wieso?
hier der quellcode:
PHP-Code:
Feld 3: <input id="date3" type="text" name="date3" value="" tabindex="1" /><br>
Feld 1: <input id="date" type="text" name="date" value="2001-11-11" onchange="test();" /><br>
Feld 2: <input id="date2" type="text" name="date2" value="" /><br>
<script language="javascript">
document.getElementById("date").focus();
function test() {
var wert = document.getElementById('date').value;
var www = string2date(wert);
if (www == false) {
document.getElementById("date").focus();
alert(document.getElementById("date").value);
} else {
alert('true');
}
}
function string2date(string) {
if(!string) return null;
string += '';
string = string.replace(/[.\/]/g, '-'); // Trennzeichen normalisieren
string = string.replace(/[^0-9-: ]/g, ''); // ungültige Zeichen entfernen
string = string.replace(/ +/g, ' '); // doppelte Leerzeichen entfernen
var uhr = string.split(" "); // Uhrzeit abtrennen
var split = uhr[0].split("-");
var year = parseInt(split[0], 10);
var month = parseInt(split[1] || 0, 10);
var day = parseInt(split[2] || 0, 10);
if(isNaN(year)) year = getFullYear();
var check = new Date(year, month - 1, day);
if(uhr[1]) {
var uhr = uhr[1].split(':');
check.setHours( uhr[0] || 0 );
check.setMinutes( uhr[1] || 0 );
check.setSeconds( uhr[2] || 0 );
}
var day2 = check.getDate();
var year2 = getFullYear(check);
var month2 = check.getMonth() + 1;
return ( year2 == year && month == month2 && day == day2 ) ? true : false;
}
function getFullYear(date){
if(!date) date = new Date();
if(typeof date.getFullYear != 'undefined') return date.getFullYear();
var year = date.getYear();
if(year < 1000) year += 2000;
return year;
}
</script>
Kommentar