Ciao,
sto usando il seguente codice per ottenere un campo di input text che mi "autocompleti" le date che digito, aggiungendo il carattere / come separatore di una data in formato gg/mm/aaaa.
In precedenza utilizzavo un normalissimo datepicker con un calendario, ma il cliente **esige** questa soluzione.
Il codice seguente funziona, ma ha un problema: funziona solo se immetto le cifre digitandole dalla tastiera "principale". Se invece utilizzo il tastierino numerico (con il NUM LOCK correttamente attivo) si imballa tutto.
Mi è stato suggerito che potrebbe essere un problema di codifica, ma non so come affrontarlo...codice:<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="content-type" content="text/html; charset=iso-8859-1"> <title>Pagina Test</title> <script type="text/javascript"> function isNumber(event){ var unicode = event.charCode? event.charCode : event.keyCode var c = String.fromCharCode( event.charCode ? event.charCode : event.keyCode ); return ( ("0123456789").indexOf(c) != -1 ); } function isBackSpace(e){ var unicode = e.charCode? e.charCode : e.keyCode return (unicode == 8); } function checkCharacter(object, event) { if (isBackSpace(event) || isNumber(event)) { var c = String.fromCharCode( event.charCode ? event.charCode : event.keyCode ); object.value = object.value + c; return true; } return false; } function formatHour( object, event ) { var validate = (isBackSpace(event) || isNumber(event)); var value=object.value; if (validate) { var c = String.fromCharCode( event.charCode ? event.charCode : event.keyCode ); if (value.length==2) { object.value = value + ":"; } else if (value.length==5) { document.getElementById("value2").focus(); } } else { object.value = value.substr (0, value.length-1); } return validate; } function formatTime( object, event ) { var validate = isBackSpace(event) || isNumber(event) ; var value=object.value; if (validate) { var c = String.fromCharCode( event.charCode ? event.charCode : event.keyCode ); if (value.length==2) { object.value = value + "/"; } else if (value.length==5) { object.value = value + "/"; } else if (value.length>10) { alert ("La data va inserita nella forma gg/mm/aaaa"); } } else { object.value = value.substr (0, value.length-1); } return validate; }</script> </head> <body> <span>Time:</span><input type="text" id="value1" name="value1" maxlength="5" value="" onkeyup=" return formatHour( this, event ); "> <span>Date:</span><input type="text" id="value2" name="value2" maxlength="10" value="" onkeyup=" return formatTime(this, event);"> </body> </html>
Ho provato con un paio di portatili e un paio di PC fissi, sistemi Windows XP, Linux Debian e Windows 7 e il comportamento è identico in tutti i casi.
Vi ringrazio per tutti i possibili suggerimenti.
Ferdinando

Rispondi quotando