Внимание! Форум временно закрыт. Все вопросы вы можете задать на странице MaxSite CMS в Github

Помогите оптимизировать код!

Только для тех, кто понимает.
Аватар пользователя
jimmyjonezz
Модератор
Сообщений: 463
Зарегистрирован: 11 дек 2011, 17:06

Помогите оптимизировать код!

Сообщение jimmyjonezz » 27 апр 2013, 18:21

Написал обработчик объекта SELECT (всплывающий список), позволяющий вставлять нужный тег при выборе определенной строки. Код рабочий, но мне кажется, что можно "ужать" код. Мой код обрабатывает три select, имеющих разные id.

 Свернуть/Развернуть спойлер
function addSelect(){
if ($('#myTable').length ) {
var tagName = $('#myTable :selected').val();
var startTag = '[' + tagName + ']';
var endTag = '[/' + tagName + ']';
if (tagName != '') {
addText(startTag, endTag);
} else {
addText('', '');
}
$('#myTable').val('');
}
if ($('#myH').length ) {
var tagName = $('#myH :selected').val();
var startTag = '[' + tagName + ']';
var endTag = '[/' + tagName + ']';
if (tagName != '') {
addText(startTag, endTag);
} else {
addText('', '');
}
$('#myH').val('');
}
if ($('#mySelect').length ) {
var tagName = $('#mySelect :selected').val();
var startTag = '[' + tagName + ']';
var endTag = '[/' + tagName + ']';
if (tagName != '') {
addText(startTag, endTag);
} else {
addText('', '');
}
$('#mySelect').val('');
}
}
stravaganza.ru

Аватар пользователя
Cuprum
Модератор
Сообщений: 766
Зарегистрирован: 01 фев 2009, 21:22

Re: Помогите оптимизировать код!

Сообщение Cuprum » 27 апр 2013, 23:01

jimmyjonezz
Давайте пример целиком (лучше с демонстрацией), чтобы глянуть, что и как должно работать. Подумаем...

Аватар пользователя
jimmyjonezz
Модератор
Сообщений: 463
Зарегистрирован: 11 дек 2011, 17:06

Re: Помогите оптимизировать код!

Сообщение jimmyjonezz » 28 апр 2013, 06:16

Проблема решена. Если кому нужно привожу рабочий вариант:
Пусть у нас есть несколько списков, примерно такого вида:

Код: Выбрать все

<select name="table" id="myTable" onChange="AddTag('myTable')">
   <option value="" class="title">Таблица:</option>
   <option value="table">Вставить таблицу</option>
   <option value="tr">Вставить строку</option>
   <option value="td">Вставить ячейку</option>
</select>


Тогда на событие onchange будет срабатывать следующий код : addTag(). Кстати, функцию addText() легко откопать в плагине editor_dumb.

Код: Выбрать все

function AddTag(ID){
if (typeof ID == "string"){
        if ($('#'+ID).length ) {
            var tagName = $('#'+ID+' :selected').val();
            if (tagName != '') {
                var startTag = '[' + tagName + ']';
                var endTag = '[/' + tagName + ']';
                addText(startTag, endTag);
            } else {
                addText('', '');
            }
            $('#'+ID).val('');
        }
    } else {
        alert(typeof ID + " NOT SUPPORTED");
    }
   }


Варианты по улучшению принимаются. Рабочий вариант здесь: viewtopic.php?f=6&t=5925
stravaganza.ru

Аватар пользователя
Cuprum
Модератор
Сообщений: 766
Зарегистрирован: 01 фев 2009, 21:22

Re: Помогите оптимизировать код!

Сообщение Cuprum » 29 апр 2013, 16:13

Не работает вставка из выпадающих списков для выделенного текста...

Аватар пользователя
jimmyjonezz
Модератор
Сообщений: 463
Зарегистрирован: 11 дек 2011, 17:06

Re: Помогите оптимизировать код!

Сообщение jimmyjonezz » 29 апр 2013, 16:47

Cuprum писал(а):Не работает вставка из выпадающих списков для выделенного текста...

У меня все работает отлично... Правда забыл сразу указать, что параметр нужно отдавать в одинарных кавычках: onChange="AddTag('myTable')"
stravaganza.ru

Аватар пользователя
Cuprum
Модератор
Сообщений: 766
Зарегистрирован: 01 фев 2009, 21:22

Re: Помогите оптимизировать код!

Сообщение Cuprum » 29 апр 2013, 17:03

Мой вариант.
Убрать обработчик из HTML (onChange=...) и вставить в editor_zero.js такой код:

Код: Выбрать все

$(function () {
   $('#myTable, #myH, #mySelect').change(function () {
      var tagName = $(this).val(),
         startTag = '[' + tagName + ']',
         endTag = '[/' + tagName + ']';

      if (tagName) {
         addText(startTag, endTag);
      }
   });
});

Аватар пользователя
jimmyjonezz
Модератор
Сообщений: 463
Зарегистрирован: 11 дек 2011, 17:06

Re: Помогите оптимизировать код!

Сообщение jimmyjonezz » 29 апр 2013, 17:35

Да, лучше... но после addtext все же следует добавить $(this).val('') - вдруг пользователь захочет вставить несколько одинаковых тегов из списка.
stravaganza.ru

Аватар пользователя
Cuprum
Модератор
Сообщений: 766
Зарегистрирован: 01 фев 2009, 21:22

Re: Помогите оптимизировать код!

Сообщение Cuprum » 29 апр 2013, 17:50

Согласен.


Вернуться в «if (!is_type('Programmer')) die('not for you');»

Кто сейчас на форуме

Пользователь просматривает форум: Bing [Bot]