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>