Форум программистов, компьютерный форум, киберфорум
jQuery
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/6: Рейтинг темы: голосов - 6, средняя оценка - 4.50
 Аватар для radiofan
3 / 2 / 1
Регистрация: 18.04.2018
Сообщений: 51

Криво работает скрипт выбора из списка

27.10.2018, 12:56. Показов 1120. Ответов 2

Студворк — интернет-сервис помощи студентам
Здравствуйте, уважаемые форумчане. Пытаюсь сделать живой поиск, но застрял на таком моменте.
Выбор пунктов происходит через раз или три, и то если они близко к инпуту. Не понимаю почему так происходит. Очень прошу помочь.

Тут примерЖ

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


Тут код
HTML5
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
<html><head>
        <link rel="stylesheet" type="text/css" href="css/StyleX.css">
        <title>Проба</title>
        <script src="js/JQuery_v3.1.1.js"></script>
    </head>
    <body style="height:700px">
        <div style="width:30%;">
            <div class="radiofan-search">
                <input style="width:100%" type="text" class="form-control ts-calculate-form">
                <div class="radiofan-select" style="display: none;">
                    <ul>
                        <li class="radiofan-option">hello</li>
                        <li class="radiofan-option">world</li>
                        <li class="radiofan-option">!</li>
                        <li class="radiofan-option">hello</li>
                        <li class="radiofan-option">world</li>
                        <li class="radiofan-option">!</li>
                        <li class="radiofan-option">hello</li>
                        <li class="radiofan-option">world</li>
                        <li class="radiofan-option">!</li>
                        <li class="radiofan-option">hello</li>
                        <li class="radiofan-option">world</li>
                        <li class="radiofan-option">!</li>
                        <li class="radiofan-option">hello</li>
                        <li class="radiofan-option">world</li>
                        <li class="radiofan-option">!</li>
                        <li class="radiofan-option">hello</li>
                        <li class="radiofan-option">world</li>
                        <li class="radiofan-option">!</li>
                        <li class="radiofan-option">hello</li>
                        <li class="radiofan-option">world</li>
                        <li class="radiofan-option">!</li>
                        <hr>
                        <li class="radiofan-option">by</li>
                        <li class="radiofan-option">RADIOFAN</li>
                    </ul>
                </div>
            </div>
        </div>
</body></html>
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
28
29
30
31
32
33
<script type="text/javascript">
            jQuery(document).ready(function ($) {
    
            $('.radiofan-search > input').each(function (index, el){
                $(el).focus(function(){
                    $(this).siblings('.radiofan-select').slideDown({
                      duration: 200,
                      easing: "linear",
                      queue: false
                    });
                });
            });
    
            $('.radiofan-option').each(function (index, el){
                $(el).click(function(){
                    var txt = $(this).text();
                    console.log(txt);
                    $(this).closest('.radiofan-search').find('input').val(txt);
                });
            });
    
            $('.radiofan-search > input').each(function (index, el){
                $(el).blur(function(){
                    $(this).siblings('.radiofan-select').slideUp({
                     duration: 100,
                     easing: "linear",
                     queue: true
                    });
                });
            });
 
            });
</script>
Стили:
CSS
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
.radiofan-search{
    font-family:inherit;
    font-size:inherit;
    font-weight:inherit;
    color:inherit;
    margin:0;
}
 
.radiofan-search > input{
    border-radius:2px 2px 2px 2px;
}
 
.radiofan-select{
    font-family:inherit;
    font-size:inherit;
    font-weight:inherit;
    color:inherit;
    margin:0;
    padding:0;
    border-top-style:none;
    border-right-style:solid;
    border-bottom-style:solid;
    border-left-style:solid;
    border-width:1px;
    border-color:inherit;
    border-radius:0px 0px 2px 2px;
    max-height:400px;
    overflow-y:auto;
    position:absolute;
    width:29%;
    background-color:#ffffff;
    z-index:8000;
    display:none;
}
 
.radiofan-select > ul{
    padding:0;
    margin:0;
    list-style-type:none;
}
 
.radiofan-select > ul > hr{
    margin-top:10px;
}
 
.radiofan-option{
    margin:0;
    padding:0px 2px 1px 15px;
}
 
.radiofan-option:hover{
    background-color: rgba(0,0,0,0.1);
    cursor: pointer
}
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
27.10.2018, 12:56
Ответы с готовыми решениями:

скрипт для выбора пункта выпадающего списка
Доброго времени суток! Спрятал select с помощью opacity, поверх position-absolute поставил блок с input и &lt;a&gt;. Клик по select есть,...

Нужен скрипт выбора из списка и добавление в другой список select
На сайтах видел из списка select добавить &gt;&gt; в другой select список. как называются эти скрипты наверняка есть где-то шаблоны с разным...

Криво прикручен скрипт к кнопке
Всем привет ! Такая ситуация &lt;html&gt; &lt;head&gt; &lt;/head&gt; &lt;body style=&quot;background-color:#000000;&quot;&gt; &lt;div...

2
the hardway first
Эксперт JS
 Аватар для j2FunOnly
2475 / 1847 / 910
Регистрация: 05.06.2015
Сообщений: 3,610
29.10.2018, 10:38
Лучший ответ Сообщение было отмечено radiofan как решение

Решение

Слушайте не click, а mousedown на элементах .radiofan-option.

Дело в том, что blur наступает при потере фокуса, то есть как только нажали кнопку мыши, а клик наступает после того как вы отпустите кнопку мыши - а элементы-то уже скрыты.
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
jQuery(document).ready(function($) {
 
  $('.radiofan-search > input').focus(function(e) {
      $(this).siblings('.radiofan-select').slideDown({
        duration: 200,
        easing: "linear",
        queue: false
      });
  });
 
  $('.radiofan-option').on('mousedown', function(e) {
    var txt = $(this).text();
    console.log(txt);
    $(this).closest('.radiofan-search').find('input').val(txt);
  });
 
  $('.radiofan-search > input').blur(function(e) {
      $(this).siblings('.radiofan-select').slideUp({
        duration: 100,
        easing: "linear",
        queue: true
      });
  });
});
1
 Аватар для radiofan
3 / 2 / 1
Регистрация: 18.04.2018
Сообщений: 51
29.10.2018, 14:32  [ТС]
Большое спасибо, j2FunOnly! Вы мне очень помогли, пока не было ответа накидал вот такой костыль:

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
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
jQuery(document).ready(function ($) {
    
    var hide = {duration: 100, easing: "linear", queue: true};
    
    $('.radiofan-search').each(function (ind, el){
        $(el).children('input').focus(function(){
            $('.radiofan-search').not(el).each(function(index, elem){
                $(elem).children('.radiofan-select').slideUp(hide);
            });
            $(this).siblings('.radiofan-select').slideDown({
              duration: 200,
              easing: "linear",
              queue: true
            });
        });
        
        $(el).find('.radiofan-option').each(function (index, elem){
            $(elem).click(function(){
                var txt = $(elem).text();
                $(el).children('input').val(txt);
                $(el).children('.radiofan-select').slideUp(hide);
            });
        });
        
        $(el).keydown(function(e){
            if($(el).children('input:focus')){
                console.log(e.which);
                if(e.which == 9){//tab
                    $(el).children('.radiofan-select').slideUp(hide);
                }
            }
        });
        
        $(el).keyup(function(e){
            if($(el).children('input:focus')){
                console.log(e.which);
                if(e.which == 18){//alt
                    $(el).children('.radiofan-select').slideUp(hide);
                }else if(e.which == 40){//стрелка вниз
                    
                }
            }
        });
        
        $(document).click(function(e) {
            if ($(e.target).closest('.radiofan-search').length) return;
            $(e.target).find('.radiofan-select').each(function(index, elem){
                $(elem).slideUp(hide);
            });
            e.stopPropagation();
        });
    });
});
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
29.10.2018, 14:32
Помогаю со студенческими работами здесь

Криво работает do while
Есть рабочий код на паскале, var a, k, s, b, x1, x2, y1, y2, h: real; n, j: integer; begin a := -1; b := 1; n :=...

Криво работает
У меня задание &quot;Создать триггер. Нужно, чтобы при изменении столбца ПРЕМИЯ, у меня столбец ИТОГО пересчитывался по формуле ...

Криво работает LoadStringW
Файл описания ресурсов: STRINGTABLE { 0, L&quot;Create&quot; 1, L&quot;Создать&quot; 2, L&quot;Edit mesh&quot; 3, L&quot;Редактировать модель&quot; 4,...

Криво работает youtube.ru
в мозиле криво работает ютуб, отображается так, как будто запрещены все скрипты и нету css, т.е. гольный текст в столбик. а в других...

Криво работает RollingCurl
привет, народ! Есть проблема конкретно с RollingCurl, в гугле нет ничего такого, на форуме не нашел тоже, поэтому решил спросить, может...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru