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

В моем случае мне нужно добавить опцию для выбора при нажатии на <select>

Теперь у меня есть <select> вот такой

<select class = "form-control" name = "commentid" id = "">
    <option value = "">select</option>
</select>

и такой код js

$("select[name=commentid]").click(function(){
    $.get(
        "url",
        function(data){
            $("select[name=commentid] option:not(:eq(0))").remove();
            $.each(data, function(k, v){
                $("select[name=commentid]").append($("<option></option>").attr("vlaue", v.id).text(v.name))
            })
        }, "json"
    )
})

опция обновляется, когда я щелкаю по выбору, но также исчезает из раскрывающегося списка

Я обнаружил, что append() закрыл раскрывающийся список, чтобы исчезнуть, но я не знаю, как это решить

что вы подразумеваете под исчезнувшим из раскрывающегося списка?

Nirali 02.05.2018 06:18

в обычном случае вы нажимаете кнопку выбора, открывается раскрывающийся список, и вы можете выбрать вариант. Но в этом случае выберите отображается, а затем сразу исчезнет

afraid.jpg 02.05.2018 06:25
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
2
116
4

Ответы 4

Попробуй это.

        $(document).ready(function () {
            $("select[name=commentid]").click(function () {
                var myOptions = [
                                    { 'val': "Value 1", 'text': "Text 1" },
                                    { 'val': "Value 2", 'text': "Text 2" },
                                    { 'val': "Value 3", 'text': "Text 3" }
                                ];

                $(myOptions).each(function (idx, obj) {
                    //console.info(idx);
                    //console.info(obj.text);
                    $('#commentid').append($('<option>', { value: obj.val, text: obj.text }));

                });
            })
        });
<script src = "https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
  
<div>
    <select class = "form-control" name = "commentid" id = "commentid">
    <option value = "">select</option>
</select>
    </div>

спасибо за вашу помощь, но это имеет некоторую разницу с моей проблемой. Я хочу добавить параметр при нажатии тега select, а не изменять событие выбора

afraid.jpg 02.05.2018 06:51

Я отредактировал ответ в соответствии с вами, когда вы нажмете кнопку выбора, он добавит параметры.

Akhil Singh 02.05.2018 06:58

Вы не можете. Вы используете только несколько атрибутов для выбора, но при этом не отображается кнопка раскрывающегося списка. Я предлагаю вам selectpicker для решения вашей проблемы. Прочитать пример здесь

Я полагаю, что вы пытаетесь здесь обновить параметры элемента управления select в событии click элемента управления select.

Итак, происходит следующее: когда вы нажимаете на элемент управления выбора (либо параметры в элементе управления выбора, либо сам элемент управления), выбранное значение не отображается при щелчке, который, как я полагаю, вы считаете исчезнувшим.

Причиной этого является ваша функция click, поскольку вы связали функцию click с элементом управления select (родительским), и из-за этого происходит event bubbling, который запускает родительское событие click из дочернего элемента.

Итак, если вы нажмете на свой вариант в элементе управления выбора, он все равно вызовет родительскую функцию click, поскольку дочерний элемент является частью родительской области, и в результате вы всегда будете видеть параметр по умолчанию (как в функции, которую вы повторно выполняете. создание опций для выбора), и вы не сможете увидеть выбранную опцию. Таким образом, лучшим подходом было бы вызвать select option populate function из другого события, вместо того, чтобы звонить из него самого. Если у вас есть другое событие, вносящее изменения в конкретное поле выбора, это будет лучший подход.

попробуй это

$(function(){
    $("select[name=commentid]").click(function(e){
        if ($(this).children('option').length <= 1){
            $.getJSON( "//www.json-generator.com/api/json/get/bUHzakaaDC", function(data){
                $.each(data, function(k,v){               
                    $('select[name=commentid]').append($('<option>', {  value: v.id, text : v.name }));
                });
            });
        }
    });        
});
select{border: 1px solid #999; padding: 5px; width:125px}
<script src = "//ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
<select class = "form-control" name = "commentid" id = "">
    <option value = "">select</option>
</select>

Другие вопросы по теме