[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Отображение/скрытие полей в форме
solomon
Привет.

В форме нужно добавить проверку:

есть два поля со временем: "старт" и "финиш". при вводе времени в эти поля, нужно отображать дополнительные поля, которые попали в промежуток времени указанный в полях старт и финиш, и не отображать те которые не попали.

дополнительные поля соответствуют часам в течение суток начиная с 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

Спустя 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.

Спустя 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 и использовать их в проверке.

Спустя 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 часов

Спустя 5 часов, 5 минут, 41 секунда (5.11.2011 - 20:28) solomon написал(а):
Дорогие, профессионалы, помогите 6-й час бьюсь.. не получается проверка
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.