разместить несколько полей с несколькими вариантами выбора - PullRequest
0 голосов
/ 13 января 2012

У меня есть форма, которую я использую для создания временных интервалов в течение недели. Сейчас выберите день недели, время начала и время окончания. У меня есть javascript добавление новой группировки этой же формы, и каждый элемент назван массивом.

<label>Day Of Week:</label> <select name="dow[]" multiple="multiple" size="5"><option value="sun">sun</option><option value="mon">mon</option><option value="tue">tue</option><option value="wed">wed</option><option value="thu">thu</option><option value="fri">fri</option><option value="sat">sat</option></select><br />
<label>Start Time</label> Hour: <select name="starthour[]"><option value="0">12 AM</option><option value="1">1 AM</option><option value="2">2 AM</option><option value="3">3 AM</option><option value="4">4 AM</option><option value="5">5 AM</option><option value="6">6 AM</option><option value="7">7 AM</option><option value="8">8 AM</option><option value="9">9 AM</option><option value="10">10 AM</option><option value="11">11 AM</option><option value="12">12 PM</option><option value="13">1 PM</option><option value="14">2 PM</option><option value="15">3 PM</option><option value="16">4 PM</option><option value="17">5 PM</option><option value="18">6 PM</option><option value="19">7 PM</option><option value="20">8 PM</option><option value="21">9 PM</option><option value="22">10 PM</option><option value="23">11 PM</option></select>Minute: <select name="startmin[]"><option value="0">0</option><option value="15">15</option><option value="30">30</option><option value="45">45</option></select> <br /> 
<label>End Time</label> Hour: <select name="endhour[]"><option value="0">12 AM</option><option value="1">1 AM</option><option value="2">2 AM</option><option value="3">3 AM</option><option value="4">4 AM</option><option value="5">5 AM</option><option value="6">6 AM</option><option value="7">7 AM</option><option value="8">8 AM</option><option value="9">9 AM</option><option value="10">10 AM</option><option value="11">11 AM</option><option value="12">12 PM</option><option value="13">1 PM</option><option value="14">2 PM</option><option value="15">3 PM</option><option value="16">4 PM</option><option value="17">5 PM</option><option value="18">6 PM</option><option value="19">7 PM</option><option value="20">8 PM</option><option value="21">9 PM</option><option value="22">10 PM</option><option value="23">11 PM</option></select>Minute: <select name="endmin[]"><option value="0">0</option><option value="15">15</option><option value="30">30</option><option value="45">45</option></select> <br />

Эта форма генерируется с помощью javascript, поэтому можно отправить несколько правил. Все отлично работает, кроме коробок с множественным выбором.

Если пользователь выбрал в правиле один mon и wed, а в правиле 2 выбрал вт, они объединяются в один массив в форме. Таким образом, дамп $ _POST покажет:

Array ( [dow] => Array ( [0] => mon [1] => wed [2] => tue ) [starthour] => Array ( [0] => 0 [1] => 15 ) [startmin] => Array ( [0] => 0 [1] => 0 ) [endhour] => Array ( [0] => 5 [1] => 17 ) [endmin] => Array ( [0] => 0 [1] => 0 ) [do] => add [act] => scheduler [mod] => availability [avtype] => perm )

У меня нет способа определить, из какого правила взяты данные в Доу. Я не верю, что я делаю что-то внешне неправильно. В настоящее время единственное исправление, которое у меня есть, - разрешить только один выбранный день. Однако часто люди проводят одинаковое время в течение нескольких дней. Было бы неплохо включить эту функцию, если это вообще возможно.

Ответы [ 2 ]

1 голос
/ 13 января 2012

В вашем javascript уникально присвойте каждой форме имя с идентификатором - это будет работать, если существует несколько форм, но, возможно, это не лучшее решение.

, возможно, лучше всего сделать это при генерации формы javascript, добавьте var i;name = i + "dow []", чтобы вы могли идентифицировать отдельные элементы формы.Я не верю, что вы можете различить элементы формы в одной и той же форме с тем же именем, по крайней мере, не в посте.Вы можете просмотреть эти элементы с помощью javascript pre-post и назначить уникальные идентификаторы для post.

0 голосов
/ 13 января 2012

Я бы сделал это следующим образом ... для каждого правила я получу метку времени, а выбранный элемент в сгенерированной форме будет выглядеть следующим образом ...

    select name="dow[timestamp][]" ...     

, поэтому все ваше правило будет иметь уникальный массив.

Вы можете получить метку времени с помощью следующего кода.

function microtime (get_as_float) 
{
    var now = new Date().getTime();
    return now;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...