Требуется помощь с 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 в пт, 18/01/2008 - 12:35.

Такс, функцию на 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, то при любом его значении элемент не будет доступен.
Значит проблема в том, что надо удалять свойство объекта


Опубликовано Separator@drupal.org в пт, 18/01/2008 - 12:36.

Функция js, просто тут тег code ужасно форматирует, поэтому взял в php


Опубликовано Separator@drupal.org в пт, 18/01/2008 - 12:59.

Уже по всякому попробовал, не работает, вот код определения форм:

<?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">&lt;hr /&gt;&lt;a href=&quot;http://www.drupal.org/&quot; title=&quot;Powered by Drupal&quot;&gt;&lt;img src=&quot;http://drupal.org/files/powered-blue-135x42.png&quot; alt=&quot;Drupal CMF&quot; /&gt;&lt;/a&gt;</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>
.....?>

?>


Опубликовано Separator@drupal.org в пт, 18/01/2008 - 13:32.

Все решил проблему:

<?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;
    }
};
?>


Новое на сайте