В форме нужно добавить проверку:
есть два поля со временем: "старт" и "финиш". при вводе времени в эти поля, нужно отображать дополнительные поля, которые попали в промежуток времени указанный в полях старт и финиш, и не отображать те которые не попали.
дополнительные поля соответствуют часам в течение суток начиная с 05 заканчивая 02, например, поле1 - час с 05 до 06, поле2 - час с 06 до 07 и т.д.
сделал на jquery:
1. по событию change в поле "финиш" - определяю переменные в "старт" и "финиш"
2. далее получаю массив id дополнительных полей, id у меня обозначены соответствующим часом. получается массив из таких id:
05,
06,
07,
...
22,
23,
00,
01,
02
никак не получается сделать проверку, чтобы отображались только те доп.поля, которые попали в промежуток указанный в "старт" и "финиш".
Вот код без проверки:
$('#finish').change(function () {
var start = $('#start').val();
var finish = $(this).val();
alert (finish);
var arr = new Array();
$(".int").each(function (i) {
arr.push(this.id);
alert (this.id);
});
});
Спустя 21 минута, 15 секунд (5.11.2011 - 11:41) Renden написал(а):
solomon
Я думаю проще всего сделать цикл типа while(start >= finish) start++ и в этот же момент раставлять разрешенные поля, id которых и есть start
Я думаю проще всего сделать цикл типа while(start >= finish) start++ и в этот же момент раставлять разрешенные поля, id которых и есть start
Спустя 57 минут, 29 секунд (5.11.2011 - 12:38) solomon написал(а):
Renden
не понял
не понял
Спустя 11 минут, 3 секунды (5.11.2011 - 12:49) solomon написал(а):
не понимаю как мне вытащить конкретные id. у меня есть массив, но вытащить отдельные id из него не получается.
Спустя 20 минут, 52 секунды (5.11.2011 - 13:10) Renden написал(а):
solomon
Я имел ввиду так:
Заместо добавления дива(как в моем случае выше) можешь показывать скрытые инпуты, или делать то что тебе нужно.
Я имел ввиду так:
<form class="form">
<input type="text" id="start"><br>
<div class="time"></div>
<input type="text" id="finish"><br>
</form>
<script>
$("#finish").change(function() {
var start = $('#start').val();
var finish = $(this).val();
while(start < finish-1) {
start++;
$(".time").before('<input type="text" value="'+start+'"><br>');
}
});
</script>
Заместо добавления дива(как в моем случае выше) можешь показывать скрытые инпуты, или делать то что тебе нужно.
Спустя 1 час, 27 минут, 33 секунды (5.11.2011 - 14:38) solomon написал(а):
Renden
Не работает
Не работает
Спустя 3 минуты, 40 секунд (5.11.2011 - 14:41) solomon написал(а):
Не работает даже, если просто твой код запустить
Спустя 14 минут, 45 секунд (5.11.2011 - 14:56) Renden написал(а):
solomon
У меня все работает, приведу полный пример страницы:
У меня все работает, приведу полный пример страницы:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.5/jquery.min.js"></script>
<title>jQuery demo</title>
</head>
<body>
<form class="form">
<input type="text" id="start"><br>
<div class="time"></div>
<input type="text" id="finish"><br>
</form>
<script>
$("#finish").change(function() {
var start = $('#start').val();
var finish = $(this).val();
while(start < finish-1) {
start++;
$(".time").before('<input type="text" value="'+start+'"><br>');
}
});
</script>
</body>
</html>
Спустя 1 минута, 51 секунда (5.11.2011 - 14:58) solomon написал(а):
Renden
Не работает, если вводить такие числа: 01, 02, 03, 04..09. Начинает работать для чисел от 10.
Не работает, если вводить такие числа: 01, 02, 03, 04..09. Начинает работать для чисел от 10.
Спустя 5 минут, 30 секунд (5.11.2011 - 15:03) Renden написал(а):
solomon
Ты совсем чтоль немощный? Добавь условие и все..
Ты совсем чтоль немощный? Добавь условие и все..
<script>
$("#finish").change(function() {
var start = $('#start').val();
var finish = $(this).val();
while(start < finish-1) {
start++;
if(start < 10) start = "0"+start;
$(".time").before('<input type="text" value="'+start+'"><br>');
}
});
</script>
Спустя 1 минута, 37 секунд (5.11.2011 - 15:05) solomon написал(а):
Вот такие временные интервалы в доп. полях. Поля начинаются с 05-06 и заканчиваются 01-02:
05-06, 06-07, 07-08, 08-09, 09-10 ... 23-00, 00-01, 01-02
Если в твоем примере ввести в старт 05, а в финиш 23 или в старт 10, а в финиш 02, то код не работает.
Поэтому я и хотел дать доп.ячейкам соответствующие id и использовать их в проверке.
05-06, 06-07, 07-08, 08-09, 09-10 ... 23-00, 00-01, 01-02
Если в твоем примере ввести в старт 05, а в финиш 23 или в старт 10, а в финиш 02, то код не работает.
Поэтому я и хотел дать доп.ячейкам соответствующие id и использовать их в проверке.
Спустя 8 минут, 29 секунд (5.11.2011 - 15:13) solomon написал(а):
Я извиняюсь, изначально неверно описал задачу.
Спустя 55 секунд (5.11.2011 - 15:14) Renden написал(а):
solomon
Цитата |
Если в твоем примере ввести в старт 05, а в финиш 23 или в старт 10, а в финиш 02, то код не работает. |
Нифига не пойму, тебе надо чтоб и в обратном порядке работало? - ну сделай обратный цикл что мешает?
Спустя 8 минут, 27 секунд (5.11.2011 - 15:23) solomon написал(а):
Нужно, чтобы если ввели в старт 05, а в финиш 02 - отобразились поля:
05-06
06-07
07-08
08-09
09-10
10-11
11-12
12-13
13-14
14-15
15-16
16-17
17-18
18-19
19-20
20-21
21-22
22-23
23-00
00-01
01-02
Т.е. поле для каждого часа в промежутке от 05:00 часов до 02:00 часов
05-06
06-07
07-08
08-09
09-10
10-11
11-12
12-13
13-14
14-15
15-16
16-17
17-18
18-19
19-20
20-21
21-22
22-23
23-00
00-01
01-02
Т.е. поле для каждого часа в промежутке от 05:00 часов до 02:00 часов
Спустя 5 часов, 5 минут, 41 секунда (5.11.2011 - 20:28) solomon написал(а):
Дорогие, профессионалы, помогите 6-й час бьюсь.. не получается проверка