Перейти к содержимому


Фотография
- - - - -

Доп. поля в профиле


Лучший Ответ omninamed , 14 Ноябрь 2013 - 14:03

Решил проблему, не нарадуюсь собой) Может кому будет полезно.

 

В шаблонах

  • editUserForm
  • membersProfileForm
  • registerForm

в самом конце добавил скрипт:

 

<!-- --------------------------------------------------------------------------------------- -->
<script type="text/javascript">

function addHandler ( object, event, handler, useCapture )
{
      if ( object.addEventListener )
            object.addEventListener ( event, handler, useCapture ? useCapture : false );
      else if ( object.attachEvent )
            object.attachEvent ( 'on' + event, handler );
}

function removeHandler ( object, event, handler )
{
      if ( object.removeEventListener )
            object.removeEventListener ( event, handler, false );
      else if ( object.detachEvent )
            object.detachEvent ( 'on' + event, handler );
}

_class_sel = document.getElementById ( "field_12" );
_side_sel = document.getElementById ( "field_13" );
_stage_sel = document.getElementById ( "field_16" );

function onSelectCharSide ( )
{
    _stage_sel.options.length = 0;
    if ( _side_sel.selectedIndex == 1 )
    {
        _stage_sel.options[0] = new Option ( "Благочестивый (89)", "bs" );
        _stage_sel.options[1] = new Option ( "Безупречный (99)", "be" );
        _stage_sel.options[2] = new Option ( "Бессмертный (100)", "im" );
    }
    else if ( _side_sel.selectedIndex == 2 )
    {
        _stage_sel.options[0] = new Option ( "Благочестивый (89)", "bs" );
        _stage_sel.options[1] = new Option ( "Дьявольский (99)", "de" );
        _stage_sel.options[2] = new Option ( "Сын ада (100)", "ds" );
    }
    else
        _stage_sel.options[0] = new Option ( "Нет", "none" );
};

function onSelectClass ( )
{
    if ( _class_sel.selectedIndex > 0 )
    {
        _side_sel.options.length = 0;
        _side_sel.options[0] = new Option ( "Не выбрана", "none" );
        _side_sel.options[1] = new Option ( "Рай", "heaven" );
        _side_sel.options[2] = new Option ( "Ад", "hell" );
        onSelectCharSide ( );
    }
    else
    {
        _side_sel.options.length = 0;
        _side_sel.options[0] = new Option ( "Не выбрана", "none" );
        _stage_sel.options.length = 0;
        _stage_sel.options[0] = new Option ( "Нет", "none" );
    };
};

addHandler ( _class_sel, "change", onSelectClass );
addHandler ( _side_sel, "change", onSelectCharSide );
onSelectClass ( );
onSelectCharSide ( );

</script>
<!-- --------------------------------------------------------------------------------------- -->

 

В дропбоксе _stage_sel который field_16 в админке нужно прописать сразу все варианты, а скрипт уже распределит сам, какие использовать при выборе в поле _side_sel

 

Тут много конечно "фигни", может посоветуете, как упростить и оптимизировать? Например:

1. Я не понял, как подгрузить этот скрипт из файла.

2. Идентификаторы полей. Как использовать ключи в шаблонах? Те, которые задаются в админке при создании поля.

_class_sel = document.getElementById ( "field_12" );
_side_sel = document.getElementById ( "field_13" );
_stage_sel = document.getElementById ( "field_16" );

Идентификаторы вытащил фаерфоксом "Inspect Element" но это не правильно...

 

: Игра Perfect World :)

Перейти к сообщению


  • Закрытая тема Тема закрыта
В теме одно сообщение

#1 Оффлайн   omninamed

    Новичок


  • Пользователи
  • Репутация
    0
    • Cообщений: 2
    • Форум:3.3.х

Отправлено 13 Ноябрь 2013 - 15:31

Здравствуйте.

 

Есть сайт клана. При регистрации пользователя есть два выпадающих списка:

1. Сторона

2. Степень просветления

 

Как сделать, чтоб при выборе стороны менялся список названий степени? И так же чтоб было у уже зарегистрированных пользователей, если захотят сменить сторону.


  • 0

Заработок и обучение заработку

#2 Оффлайн   omninamed

    Новичок


  • Пользователи
  • Репутация
    0
    • Cообщений: 2
    • Форум:3.3.х

Отправлено 14 Ноябрь 2013 - 14:03   Лучший Ответ

Решил проблему, не нарадуюсь собой) Может кому будет полезно.

 

В шаблонах

  • editUserForm
  • membersProfileForm
  • registerForm

в самом конце добавил скрипт:

 

<!-- --------------------------------------------------------------------------------------- -->
<script type="text/javascript">

function addHandler ( object, event, handler, useCapture )
{
      if ( object.addEventListener )
            object.addEventListener ( event, handler, useCapture ? useCapture : false );
      else if ( object.attachEvent )
            object.attachEvent ( 'on' + event, handler );
}

function removeHandler ( object, event, handler )
{
      if ( object.removeEventListener )
            object.removeEventListener ( event, handler, false );
      else if ( object.detachEvent )
            object.detachEvent ( 'on' + event, handler );
}

_class_sel = document.getElementById ( "field_12" );
_side_sel = document.getElementById ( "field_13" );
_stage_sel = document.getElementById ( "field_16" );

function onSelectCharSide ( )
{
    _stage_sel.options.length = 0;
    if ( _side_sel.selectedIndex == 1 )
    {
        _stage_sel.options[0] = new Option ( "Благочестивый (89)", "bs" );
        _stage_sel.options[1] = new Option ( "Безупречный (99)", "be" );
        _stage_sel.options[2] = new Option ( "Бессмертный (100)", "im" );
    }
    else if ( _side_sel.selectedIndex == 2 )
    {
        _stage_sel.options[0] = new Option ( "Благочестивый (89)", "bs" );
        _stage_sel.options[1] = new Option ( "Дьявольский (99)", "de" );
        _stage_sel.options[2] = new Option ( "Сын ада (100)", "ds" );
    }
    else
        _stage_sel.options[0] = new Option ( "Нет", "none" );
};

function onSelectClass ( )
{
    if ( _class_sel.selectedIndex > 0 )
    {
        _side_sel.options.length = 0;
        _side_sel.options[0] = new Option ( "Не выбрана", "none" );
        _side_sel.options[1] = new Option ( "Рай", "heaven" );
        _side_sel.options[2] = new Option ( "Ад", "hell" );
        onSelectCharSide ( );
    }
    else
    {
        _side_sel.options.length = 0;
        _side_sel.options[0] = new Option ( "Не выбрана", "none" );
        _stage_sel.options.length = 0;
        _stage_sel.options[0] = new Option ( "Нет", "none" );
    };
};

addHandler ( _class_sel, "change", onSelectClass );
addHandler ( _side_sel, "change", onSelectCharSide );
onSelectClass ( );
onSelectCharSide ( );

</script>
<!-- --------------------------------------------------------------------------------------- -->

 

В дропбоксе _stage_sel который field_16 в админке нужно прописать сразу все варианты, а скрипт уже распределит сам, какие использовать при выборе в поле _side_sel

 

Тут много конечно "фигни", может посоветуете, как упростить и оптимизировать? Например:

1. Я не понял, как подгрузить этот скрипт из файла.

2. Идентификаторы полей. Как использовать ключи в шаблонах? Те, которые задаются в админке при создании поля.

_class_sel = document.getElementById ( "field_12" );
_side_sel = document.getElementById ( "field_13" );
_stage_sel = document.getElementById ( "field_16" );

Идентификаторы вытащил фаерфоксом "Inspect Element" но это не правильно...

 

: Игра Perfect World :)


  • 0