yarrr  Цитата: но было бы очень удобно
  увеличение количества кода не гарантирует работу под всеми браузерами. 
 удобно - сделай выпадающие селекты с днем, месяцем и годом.   
 javascript не предназначен для подобной динамики..в этом его слабость.  
 хочется сделать так - делай поля с использованием Flash     
 ps: вот тебе мой код навскидку.. наверняка потребует доработки и не гарантирую работу под любым браузером  
Код:  <html> 
 <head> 
 <script language="JavaScript"> 
 function check(evt,obj) 
 { 
  var keyCode = evt.keyCode ? evt.keyCode : 
                evt.charCode ? evt.charCode : 
                evt.which ? evt.which : void 0  
  var pos=doGetCaretPosition(obj) 
  if (keyCode>=48&&keyCode<=57&&obj) 
   { 
    if (pos>9) return 
    obj.value=obj.value.substr(0,pos)+String.fromCharCode(keyCode)+obj.value.substr(pos+1) 
    pos++ 
   } 
   else  pos+=(keyCode==8||keyCode==37)?-1:(keyCode==39?1:0)   
   if (pos==2||pos==5) 
      if(keyCode==37) pos-- 
        else pos++ 
   setCursor(obj,pos) 
 } 
 function doGetCaretPosition(ctrl){ 
     var CaretPos=0 
     if( document.selection ){  
     var range = document.selection.createRange() 
 try {  
     var stored_range = range.duplicate()  
     stored_range.moveToElementText(ctrl)  
     stored_range.setEndPoint('EndToEnd',range)  
     CaretPos=stored_range.text.length-range.text.length 
     } 
 catch(e) 
      { 
      range.moveStart('character',-ctrl.value.length) 
      CaretPos=range.text.length}                      
 }    else if(ctrl.selectionStart||ctrl.selectionStart=='0') CaretPos=ctrl.selectionStart 
 return CaretPos 
 }   
 function setCursor(obj, pos) 
 { 
   if (obj.setSelectionRange) 
   { 
    obj.focus() 
    obj.setSelectionRange(pos, pos) 
   } 
   else if (obj.createTextRange) 
   { 
    var range = obj.createTextRange() 
    range.collapse(true) 
    range.moveEnd('character', pos) 
    range.moveStart('character', pos) 
    range.select() 
    } 
 } 
 </script> 
 </head> 
 <body> 
 <input type=text id="date" onKeydown='check(event,this); return false' value='  /  /    ' maxlength=10> 
 </body> 
 </html>