starro-serge: Блог

Главные вкладки

[РЕШЕНО] Опять про это. Форма API. Потеря значений HIDDEN-полей при возврате формы.

30 августа 2010 в 5:03

Этого не может быть!

В форме несколько HIDDEN-полей, значения которых вычисляются скриптом в зависимости от заданных юзером значений в полях ввода.
При получении формы в $form_state нахожу эти HIDDEN-поля нетронутыми. То есть со значениями, переданными в форму, а не вычисленные в форме скриптом.
При этом в Firefox в диалоге вижу, что поля вычислятся как надо.

Этого не может быть!Этого не может быть!Этого не может быть!

Конфликт jtooltips и collapse в IE7?

23 августа 2010 в 13:21

Пишу свой модуль.

На странице используются collapse для fieldset и jtooltips для всплывающих подсказок-картинок для элементов внутри.
В Firefox всё работает как надо.
Картинка с экрана прилагается.
В IE7 картинка-подсказка обрезается размерами fieldset и выдается с прокруткой справа и снизу.
Картинка тоже прилагается.
Это конфликт между ними или что?

Кусок кода для fieldset:

<fieldset class=" collapsible collapsed">
<legend>Model:</legend>
  <div class="form-item">
         <div class="form-radios">
            <div class="form-item">
                <div class="form-radios">
                    <div class="form-item" id="edit-win_model_radios_0-wrapper">
                    <label class="option tt" for="edit-win_model_radios_0">
                        <input type="radio" id="edit-win_model_radios_0" name="win_model_radios" value="0"   checked="checked" class="form-radio" />
                    Fast Karm
                        <span class="tooltip">
                            <span class="top"></span>
                            <span class="middle">
                                <img src="fast_karm_0.jpg" />
                            </span>
                            <span class="bottom">
                            </span>
                        </span>
                    </label>
                    </div>
        .........................
                </div>
            </div>
         </div>
        </div>
        </fieldset

CSS к нему:

/*---------- bubble tooltip -----------*/
label.tt{
    position:relative;
    z-index:3024;
    color:#3CA3FF;
      font-weight:bold;
    text-decoration:none;
}

[РЕШЕНО] И это всё о ней. Форма API. Заморочка с _form_alter.

15 августа 2010 в 13:50

Заранее прошу прощения за многословие, но короче не объяснить.

Пишу свой модуль.
В модуле присутствуют:
function win_constructor_menu() {
$items['win_constructor'] = array(
...
return $items;
}
function win_constructor_page() {
$output = drupal_get_form('win_constructor_nameform');
return $output;
}
function win_constructor_nameform() {
...
return $form;
}
function win_constructor_form_alter(&$form, &$form_state, $form_id) {
...
}
function win_constructor_nameform_validate($form, $form_state) {
....
}
function theme_win_constructor_nameform($form) {
...
drupal_render($form);
return $output;
}

Чтобы проследить как это всё работает, расставил drupal_set_message по модулям.
При загрузке страницы получаем следующую последовательность:
* PAGE win_constructor_page
* CONSTRUCTOR win_constructor_nameform
* ALTER win_constructor_form_alter
* in ALTER $form_state[values][win_opens_radios] =
* in ALTER $form[win_opens][win_opens_radios] = 0
* THEME theme_win_constructor_nameform
* ALTER win_constructor_form_alter
* in ALTER $form_state[values][win_opens_radios] =
* in ALTER $form[win_opens][win_opens_radios] =
* ALTER win_constructor_form_alter
* in ALTER $form_state[values][win_opens_radios] =
* in ALTER $form[win_opens][win_opens_radios] =

Тут уже непонятно, зачем после темизации ещё два раза влезаем в ALTER.

Опять про это, темизация формы API

10 августа 2010 в 3:00

Прописал темизацию поля ввода типа переключателя.
Код генерируется где надо и как надо.
За исключением того, что не показывается предварительно выбранное значение.
Хотя в коде всё есть вроде бы и
checked="checked"
стоит на месте.
В файлах кусок картинки с монитора и картинка с куском кода.

Что бы это значило?

Самое смешное, что рядышком аналогичное поле, сгенерированное Друпалом.
Код аналогичный, копейка в копейку, что называется.
Но там всё в порядке.

Темизация формы API

6 августа 2010 в 22:45

Можно ли при темизации формы повесить в тег onSubmit?
В форме с десяток цифровых полей ввода, значения которых лимитированы и взаимозависимы.
Задача простая - навесить на форму скрипт-валидатор и пересчёта значений полей на стороне пользователя.
Для полей формы событие onChange при темизации повесить можно.
А как до тега добраться - непонятно.
Кроме того, при нажатии Enter в поле ввода генерируется событие Submit.
Поэтому попутная задача - блокировать отправку формы в таких случаях до ее окончательного формирования и отправки только кнопкой.