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

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

27.10.2018, 12:56. Показов 1141. Ответов 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
4 / 3 / 1
Регистрация: 18.04.2018
Сообщений: 53
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
Ответ Создать тему
Новые блоги и статьи
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru