Требуется помощь с js и формами Drupal
Прислано: Separator@drupal.org
пт, 18/01/2008 - 11:27
Вот реализация формы:
<?php
function rss_banner_configure() {
$form['rss_banner_enabled'] = array(
'#type' => 'radios',
'#title' => t('Rss-banner status'),
'#default_value' => variable_get('rss_banner_enabled', RSS_BANNER_ENABLED),
'#options' => array(t('Disabled'), t('Enabled')),
);
$form['rss_banner_text'] = array(
'#type' => 'textarea',
'#name' => 'rss_banner_text',
'#title' => t('Rss-banner text'),
'#default_value' => variable_get('rss_banner_text', t(RSS_BANNER_TEXT))
);
if (!variable_get('rss_banner_enabled', RSS_BANNER_ENABLED)) {
$form['rss_banner_text']['#disabled'] = TRUE;
}
?>Хочу сделать на js, при выборе Disabled у объекта edit-rss-banner-text свойство "disabled" выставляется в "disabled", при выборе Enabled выставляется в "enabled"
Проблема в том, что я совсем не знаю Javascript. И в каком месте модуля вставлять drupal_add_js()? Нужно под 5 Drupal
- Separator@drupal.org's blog
- Для комментирования войдите или зарегистрируйтесь
Такс, функцию на onclick посадил, но пока она что-то не отрабатывает, не могу понять в чем дело
<?php
function rss_banner_enabled(rbInput) {
if (rbInput.value == 0) {
document.all.edit-rss-banner-text.disabled="disabled";
} else {
document.all.edit-rss-banner-text.disabled="enabled";
}
}
?>И еще, я так понял если есть свойство disabled, то при любом его значении элемент не будет доступен.
Значит проблема в том, что надо удалять свойство объекта
- Для комментирования войдите или зарегистрируйтесь
Функция js, просто тут тег code ужасно форматирует, поэтому взял в php
- Для комментирования войдите или зарегистрируйтесь
Уже по всякому попробовал, не работает, вот код определения форм:
<?php
function rss_banner_configure() {
drupal_add_js(drupal_get_path('module', 'rss_banner') .'/rss_banner.js');
$form['rss_banner_enabled'] = array(
'#type' => 'radios',
'#title' => t('Rss-banner status'),
'#default_value' => variable_get('rss_banner_enabled', RSS_BANNER_ENABLED),
'#options' => array(t('Disabled'), t('Enabled')),
'#attributes' => array('onClick' => 'rss_banner_enabled(this);')
);
$form['rss_banner_text'] = array(
'#type' => 'textarea',
'#name' => 'rss_banner_text',
'#title' => t('Rss-banner text'),
'#default_value' => variable_get('rss_banner_text', t(RSS_BANNER_TEXT))
);
if (!variable_get('rss_banner_enabled', RSS_BANNER_ENABLED)) {
$form['rss_banner_text']['#disabled'] = TRUE;
}
$form['buttons']['submit'] = array('#type' => 'submit', '#value' => t('Save configuration'));
$form['buttons']['reset'] = array('#type' => 'submit', '#value' => t('Reset to defaults'));
return system_settings_form($form);
}
?>Вот js:
<?php
function rss_banner_enabled(rbInput) {
if (rbInput.value == 0) {
document.getElementById('rss-banner-configure').rss_banner_text.disabled=true;
} else {
document.getElementById('rss-banner-configure').rss_banner_text.disabled=false;
}
}
?>Вот получившийся html:
<?php
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ru" lang="ru">
<head>
......
<script type="text/javascript" src="/sites/all/modules/rss_banner/rss_banner.js"></script>
......
</head>
<body class="sidebar-left">
......
<form action="/admin/settings/rss_banner" accept-charset="UTF-8" method="post" id="rss-banner-configure">
<div><div class="form-item">
<label>Rss-banner status: </label>
<div class="form-radios"><div class="form-item">
<label class="option"><input type="radio" name="rss_banner_enabled" value="0" checked="checked" onClick="rss_banner_enabled(this);" class="form-radio" /> Отключено</label>
</div>
<div class="form-item">
<label class="option"><input type="radio" name="rss_banner_enabled" value="1" onClick="rss_banner_enabled(this);" class="form-radio" /> Включено</label>
</div>
</div>
</div>
<div class="form-item">
<label for="edit-rss-banner-text">Rss-banner text: </label>
<textarea cols="60" rows="5" name="rss_banner_text" id="edit-rss-banner-text" disabled="disabled" class="form-textarea"><hr /><a href="http://www.drupal.org/" title="Powered by Drupal"><img src="http://drupal.org/files/powered-blue-135x42.png" alt="Drupal CMF" /></a></textarea>
</div>
<div class="textarea-identifier description">The ID for for <a href="/admin/settings/fckeditor">excluding or including</a> this element is: edit-rss-banner-text - the path is: admin/settings/rss_banner</div><input type="submit" name="op" id="edit-submit" value="Сохранить настройки" class="form-submit" />
<input type="submit" name="op" id="edit-reset" value="Вернуться к исходным" class="form-submit" />
<input type="hidden" name="form_token" id="edit-rss-banner-configure-form-token" value="900e91341efcde7c3f9d0c3570d2784d" />
<input type="hidden" name="form_id" id="edit-rss-banner-configure" value="rss_banner_configure" />
</div></form>
.....?>?>
- Для комментирования войдите или зарегистрируйтесь
Все решил проблему:
<?php
rss_banner_enabled_function = function rss_banner_enabled(rbInput) {
if (rbInput.value == 0) {
document.getElementById('edit-rss-banner-text').disabled=true;
} else {
document.getElementById('edit-rss-banner-text').disabled=false;
}
};
?>- Для комментирования войдите или зарегистрируйтесь


Комментарии