Cheery
.:МордератоР:. | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору 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> |
| Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 20:47 20-08-2007 | Исправлено: Cheery, 21:19 20-08-2007 |
|