(Вообще-то этот вопрос касается всех типов полей в Profile)
Создаю поля для профайла пользователя. Возникла потребность сделать 2 поля зависимых друг от друга. Т.е. - вводим число в первое поле в кг, а вдругом высвечивается пересчитанное на фунты.
К полю ввода привязать OnChange.
Вручную это сделать - раз плюнуть. А как это внедрить в систему Drupal?
Комментарии
самый простой способ — цепляете в тему файл скриптов, в нем пишете примерно следующее:
$(document).ready(function(){
// jQuery обработчик OnChange
$('#your_field_id').change(function(){
this_val = $(this).val();
$('#another_field_id').val(kg_to_pounds(this_val));
});
});
function kg_to_pounds(kg) {
//....
return pounds;
}
Есть еще варианты, как то модификция формы через hook_form_alter или что-нибудь другое, но и этого способа вам вполне хватит.
Как вцепить файл в тему? В теме найти info файл, в нем добавить строку
scripts[] = 'scripts/my.js'
Там же создать папку scripts и в ней файлик my.js, в котором и прописать код, который дан выше. После этого почистить кеш друпала в Настройках сайта » Производтельность (там кнопка внизу), и скрипт должен подхватится.
Ооооооого!
Прикольно. Счас займусь.
Спасибо огромное!
Не получилось.
Я написал параметр name полей:
profile_weight_kg ('#profile_weight_kg')
profile_weight_pounds ('#profile_weight_pounds')
id у них - 33 и 34.
Или всё-таки id нужно вписать? ('#33' и '#34')
Кеш тоже очистил /settings/performance
И нужен ли модуль JQ?
посмотрите фаербагом или в сорце страницы, какие конкретные айдишники имеют поля на форме профиля. Исходя из этих данных, пропишите в скрипт корректные селекторы. Модуль не нужен — джейквери в ядре.
Теперь все прошло без шума и пыли.
Еще раз большое спасибо, это ценные знания. Теперь уже и это смогу от себя добавлять в код.