С Новым годом! Форум программистов, компьютерный форум, киберфорум
jQuery
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.73/15: Рейтинг темы: голосов - 15, средняя оценка - 4.73
28 / 25 / 14
Регистрация: 17.01.2013
Сообщений: 323

Модальное окно и Ajax

12.05.2017, 14:01. Показов 3092. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
всем добрый день, уважаемые форумчане!
помогите, пожалуйста, решить следующую задачу:
есть страница, на ней есть модальное окно с сортировкой товаров
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<button class="btn btn-info spoiler-cats sort" type="button" data-toggle="modal" data-target="#sort"><i class="fa fa-sort-amount-asc" aria-hidden="true"></i> сортировка</button>
<div id="sort" class="modal fade">
    <div class="modal-dialog">
        <div class="modal-content">
            <div class="modal-body">
                <button class="close" type="button" data-dismiss="modal">x</button>
                <h3>Сортировка по</h3>
                <div id="sort">
                    <div class="item" rel="name" onclick="sf_doSort('smart_filter_156', this);">алфавиту
                    <div class="item" rel="price" onclick="sf_doSort('smart_filter_156', this);">стоимости
                </div>
            </div>
        </div>
    </div>
</div>
сортировка работает на Ajax и при выборе сортировки, например, по цене, модальное окно скрывается, но остается затемнение - div.modal-backdrop.

найденное в дебрях интернета решение не помогает:
JavaScript
1
2
3
4
5
<script>
document.getElementsByClassName('item').onclick = function() {
    document.getElementsByClassName('modal-backdrop').style.display = 'none';
}
</script>
скажите, пожалуйста, каким образом можно скрыть div.modal-backdrop при клике на .item?

заранее огромное спасибо за помощь!
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
12.05.2017, 14:01
Ответы с готовыми решениями:

Модальное окно + ajax
Здравствуйте, я раньше писал на php и с ajax/jquery сталкивался не так часто. Сейчас встала потребность в более-менее современном...

Модальное окно jquery ajax
Я слабо понимаю в ajax и java, возникла проблема, по сути с готовым скриптом. Есть форма, при нажатии на кнопку отправить, должны данные...

AJAX Загрузка страницы в модальное окно
Добрый день или вечер. Возникла задача =)) Есть под домены.. там размещены сайты, надо организовать загрузку этих сайтов в модальное окно...

8
Эксперт JS
2463 / 1769 / 625
Регистрация: 11.07.2016
Сообщений: 4,067
12.05.2017, 14:08
JavaScript
1
2
3
4
5
var elems = document.getElementsByClassName('item');
for (var i = 0; i < elems.length; i++) elems[i].onclick = function() {
    var elems = document.getElementsByClassName('modal-backdrop');
    for (var j = 0; j < elems.length; j++) elems[j].style.display = 'none';
}
Добавлено через 2 минуты
То же на jQuery:
JavaScript
1
2
3
$('.item').on('click', function(){
    $('.modal-backdrop').hide();
});
0
28 / 25 / 14
Регистрация: 17.01.2013
Сообщений: 323
12.05.2017, 14:14  [ТС]
к сожалению, не работают оба варианты.
наверное, лучше будет показать страницу, чтобы не объяснять на пальцах.
страница
нужно пролистать чуть вверх и там будет кнопка "сортировка". там нужно будет выбрать любую сортировку. а дальше все будет ясно - затемнение не убирается =(
0
Эксперт JS
2463 / 1769 / 625
Регистрация: 11.07.2016
Сообщений: 4,067
12.05.2017, 14:25
В каком файле у вас описана функция sf_doSort()?
0
28 / 25 / 14
Регистрация: 17.01.2013
Сообщений: 323
12.05.2017, 14:39  [ТС]
не уверена, что нужен полный путь, но на всякий случай - templates\mobile_smartphone\html\com_jsh opping\search\sortpanel.php

скрипт полностью
Кликните здесь для просмотра всего текста

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
<?php
 
// no direct access
defined('_JEXEC') or die;
?>
 
<div id="<?php echo $this->panelId; ?>" class="sf_panel">
    <?php
    if ($this->sortFields)
    {
    ?>
        <div class="sf_sortbtn">
            <div class="title"><?php echo JText::_('MJSF_SORT_PANEL_TITLE'); ?></div>
            <?php
            foreach ($this->sortFields as $field => $name)
            {
                echo '<div class="item" rel="'.$field.'" onclick="sf_doSort(\'smart_filter_'.$this->mid.'\', this);">'
                        .$name
                        .'<span class="sort'
                            .( ($this->orderby == $field && $this->order) ? ' '.$this->order : '' )
                        .'"></span>'
                    .'</div>';
            }
            ?>
        </div>
    <?php
    }
    ?>
 
    <?php
    if ($this->limitList)
    {
    ?>
        <div class="sf_sortcount">
            <?php
            echo JText::_('MJSF_PRODUCTS_ON_PAGE')
                .'&nbsp;'
                .JHtml::_(
                    'select.genericlist',
                    $this->limitList,
                    'sf_limit',
                    'onchange="sf_onChangeLimits(this, '.$this->mid.')" autocomplete="off"',
                    'value',
                    'text',
                    $this->limit,
                    'sf_limit'
                );
            ?>
        </div>
    <?php
    }
    ?>
    
    <?php
    if ($this->stockVal >= 0)
    {
    ?>
        <div class="sf_stock">
            <select name="sf_dummy[stock]" onchange="sf_doPostFilter('smart_filter_<?php echo $this->mid; ?>', this);">
                <option value="0" <?php echo (!$this->stockVal) ? 'selected="selected"' : ''; ?>>
                    <?php echo JText::_('MJSF_STOCK_INACTIVE_NAME'); ?>
                </option>
                <option value="1" <?php echo ($this->stockVal) ? 'selected="selected"' : '' ?>>
                    <?php echo JText::_('MJSF_STOCK_ACTIVE_NAME'); ?>
                </option>
            </select>
        </div>
    <?php
    }
    ?>
 
    <?php
    if ($this->show_product_count)
    {
    ?>
        <div class="sf_prodcount">
            <?php echo _JSHOP_DISPLAY_NUMBER.": "; ?>
            <?php echo $this->product_count; ?>
        </div>
    <?php
    }
    ?>
</div>


там ситуация такая:
изначально используется базовая сортировка Joomshopping и при клике страница перезагружается.
когда используешь фильтр, панель сортировки подменяется на панель сортировки от фильтра - код в спойлере выше.
0
Эксперт JS
2463 / 1769 / 625
Регистрация: 11.07.2016
Сообщений: 4,067
12.05.2017, 14:59
Я так и не увидел, где у вас описана функция sf_doSort().
HTML5
1
<div class="item" rel="name" onclick="sf_doSort('smart_filter_156', this);">алфавиту
Вы тут при клике вызываете JS-функцию sf_doSort(). Где она?
И кстати у вас дивы не закрыты.
0
28 / 25 / 14
Регистрация: 17.01.2013
Сообщений: 323
12.05.2017, 15:59  [ТС]
извините, не совсем верно поняла вопрос по поводу функции
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
function sf_doSort (fid, el)
{
    el = jQuery(el);
    var name = el.attr('rel');
    var form = jQuery('#'+fid).get(0);
 
    if ( !name || !form ) return;
 
    var mid = form.mid.value;
 
    // Обновление направления сортировки
    form.sf_orderby.value = name;
 
    var s = el.find('.sort');
    if ( s.hasClass('asc') ) {
        form.sf_order.value = 'desc';
    } else {
        form.sf_order.value = 'asc';
    }
 
    if ( sf_load(form, false) ) {
        // AJAX отключен, либо неверный селектор контента
        // Передача запроса (submiit формы)
        form.submit();
    }
 
}
кстати, я так понимаю, что может быть в этой части можно принудительно отключить ajax и сделать просто перезагрузку страницы. наверное, это было бы проще.
если можно - скажите, пожалуйста, как...
0
Эксперт JS
2463 / 1769 / 625
Регистрация: 11.07.2016
Сообщений: 4,067
12.05.2017, 16:44
Лучший ответ Сообщение было отмечено katjuha6 как решение

Решение

Попробуйте в лоб:
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
function sf_doSort (fid, el)
{
    el = jQuery(el);
    var name = el.attr('rel');
    var form = jQuery('#'+fid).get(0);
 
    if ( !name || !form ) return;
 
    var mid = form.mid.value;
 
    // Обновление направления сортировки
    form.sf_orderby.value = name;
 
    var s = el.find('.sort');
    if ( s.hasClass('asc') ) {
        form.sf_order.value = 'desc';
    } else {
        form.sf_order.value = 'asc';
    }
 
    if ( sf_load(form, false) ) {
        // AJAX отключен, либо неверный селектор контента
        // Передача запроса (submiit формы)
        form.submit();
    }
  jQuery('.modal-backdrop').hide();
}
1
28 / 25 / 14
Регистрация: 17.01.2013
Сообщений: 323
12.05.2017, 16:57  [ТС]
Вы - гений!!!
огромное спасибо!!!!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
12.05.2017, 16:57
Помогаю со студенческими работами здесь

Показать модальное окно после AJAX-запроса
Всем привет! Нужна помощь. и так есть простая форма с ajax. как только заработает нужно показать модальное окно, окно можно посмотреть...

Как открыть модальное окно из страницы подгруженной ajax-ом.
Приветствую, уважаемые! Возникла проблема. Дано: Страница, на ней часть контента подгружается ajax-ом. Задача: Данные подгрузили,...

Вызвать модальное окно Bootstrap после возврата значения ajax
Всем привет. Недавно начал изучать javascript. И вот задача, средствами ajax отправляю данные формы и возвращаю определенные значения....

Как создать окно в окне (модальное окно)?
Подскажите новичку, как создать на сайте в родительском окне небольшое окошко поверх него для ввода некоторой информации.

Модальное окно, сделать загрузку в окно по ссылке
Привет всем нашел в интернете скрипт модального окна. Очень он мне подходит но есть одно но я хочу использовать несколько модальных окон...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути
Programma_Boinc 01.01.2026
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути Сочетание глобально распределённой вычислительной мощности и инновационных. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru