|
|
|
| можно сделать ввод даты по маске в форму к примеру "ДД.ММ,ГГГГ" если можно то как??? | |
|
|
|
|
|
|
|
для: ren
(16.05.2007 в 12:53)
| | var now = new Date();
document.form.input.value = now.getDay() + '.' + now.getMonth() + '.' + now.getFullYear(); | |
|
|
|
|
|
|
|
для: bronenos
(16.05.2007 в 14:47)
| | если нетрудно то можно поподробнее... и можно сделать чтоб пользователь не мог вводить не числа | |
|
|
|
|
|
|
|
|
для: ilyaILF
(16.05.2007 в 15:36)
| |
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
<title>Sample</title>
<script type="javascript">
var i=0;
function nowdate(obj,evt)
{
if(i!=(obj.value.length-1))i=obj.value.length-1;
if(evt.keyCode>='48'&&evt.keyCode<='57'||evt.keyCode>='97'&&evt.keyCode<='105'){
if(i<10){
if(i==2||i==5){
obj.value=obj.value.substring(0,obj.value.length-1)+'.';
}
i+=1;
}else{obj.value=obj.value.substring(0,obj.value.length-1);}
}else{
obj.value=obj.value.substring(0,obj.value.length-1);
}
}
</script>
</head>
<body>
<input name="myinput" onkeyup="nowdate(this,event);" value="ДД.ММ.ГГГГ" onfocus="this.value='';" />
<span style="cursor:pointer;text-decoration: underline;" onclick="var now=new Date();document.getElementsByName('myinput')[0].value=now.getDay()+'.'+now.getMonth()+'.'+now.getYear();">текущая дата</span>
</body>
</html>
| Небольшие добавления - см. в начале функции, для возможности удаления и повторного ввода данных. | |
|
|
|
|
|
|
|
для: ilyaILF
(16.05.2007 в 16:22)
| | Cпасиб большое за помощь! | |
|
|
|
|
|
|
|
для: ren
(16.05.2007 в 22:43)
| | Только допишите в код <script type="text/javascript">. | |
|
|
|
|
|
|
|
для: ilyaILF
(16.05.2007 в 22:52)
| | а можно что нибудь прикрутить еще в скрипт чтоб пользователь не смог ввести ничего кроме
"ХХ.ХХ.ХХХХ" где Х - цифра ?? | |
|
|
|
|
|
|
|
для: ren
(17.05.2007 в 01:50)
| | А сейчас скрипт разве не тоже делает?!! Пользователь может ввести в него только 8 цифр, точки проставляются автоматически, а буквы стираются при вводе.
Ввод "текущая дата" можно вообще убрать. | |
|
|
|
|
|
|
|
для: ren
(17.05.2007 в 01:50)
| | Ну вот вам скрипт, который не даст ввести что-либо отличное от маски, заодно проверит правильность ввода по количеству дней в месяце, с учетом високосности года...да ещё и не отстанет, покуда не будет введена корректная дата:
<script>
function mFunc (x)
{
var F = 2007; //максимально допустимый год
function E (y)
{
if (navigator.userAgent.indexOf ('MSIE') > 0) document.getElementById ('mIframe').src = '';
O.value = V.substr (0, y);
return;
}
var M = 'dd.dd.dddd', D = '202121221212'.split (''), O = document.mForm.mDate, V = O.value, j = 0;
if (x && V.length < M.length) {alert ('Введите дату в формате ДД.ММ.ГГГГ'); O.focus (); O.value += ''; return}
if (!V) return; if (V.length > M.length) {V = V.substr (0, M.length); O.value = V}
while (j < V.length)
if (!V.charAt (j).replace (new RegExp ('\\' + M.charAt (j)), '').length)
{
if (j == 0 && V.charAt (0) * 1 > 3) {E (0); break}
if (j == 1 && (V.substr (0, 2) * 1 == 0 || V.substr (0, 2) * 1 > 31)) {E (0); break}
if (j == 3 && V.charAt (3) * 1 > 1) {E (3); break}
if (j == 4 && (V.substr (3, 2) * 1 == 0 || V.substr (3, 2) * 1 > 12)) {E (3); break}
if (j == 4 && (V.substr (0, 2) * 1 > (D [V.substr (3, 2) * 1 - 1] * 1 + 29))) {E (3); break}
if (j == 6 && V.charAt (6) * 1 > F.toString ().charAt (0) * 1) {E (6); break}
if (j == 9 && (V.substr (6, 4) * 1 == 0 || V.substr (6, 4) * 1 > F)) {E (6); break}
if (j == 9 && V.substr (6, 4) * 1 % 4 != 0 && V.substr (0, 2) * 1 == 29 && V.substr (3, 2) * 1 == 2) {E (6); break}
j++;
}
else {E (j); break}
}
</script>
<form name="mForm">
Введите дату в формате ДД.ММ.ГГГГ: <input name="mDate" onkeyup="mFunc (0)" onpaste="setTimeout ('mFunc (1)', 0)" onchange="mFunc (1)" onblur="mFunc (1)">
<iframe style="display: none" id="mIframe"></iframe>
<br><input value="прочее">
...
</form>
|
Но вообще-то, требовать от клиента ввода даты в определённом формате - не есть хорошо.
Люди все разные - кто-то привык писать "1 мая 2007 года", кто-то "01.05.07", кто-то "2007.05.01"... вариантов много. Кроме того, большинство пишет, не глядя на экран монитора, а смотря на клавиатуру.
ИМХО, значительно лучше использовать три селекта: год, месяц, день (именно в таком порядке, чтобы использовать функцию динамической подстановки нужного количества дней в месяце с учетом високосности года).
UPDATE: Эксплорер (при включённых динамиках) ещё будет и постукивать при нажатии "не тех" клавиш (для того и добавлен невидимый IFRAME). | |
|
|
|
|
|
|
|
для: CNT
(17.05.2007 в 07:54)
| | Благодарю за помощь! все работает отлично | |
|
|
|