Добавить настраиваемый класс для выбора опции при открытии и закрытии в html

Как добавить настраиваемый класс к элементу опции выбора.

Сценарий: когда я нажимаю и открываю опцию выбора, должен быть добавлен «class = open». Когда он закрывается при щелчке за пределами dom или выборе какой-либо опции или повторном щелчке по раскрывающемуся списку следует добавить «class = close».

Мой код:

<select id = "sKMob_orderStatus">
    <option>a</option>
    <option>b</option>
    <option>c</option>
</select>
<select id = "skMob_orderDate">
    <option>a</option>
    <option>b</option>
    <option>c</option>
</select>
$("#sKMob_orderStatus, #skMob_orderDate").on("mousedown",function(){
    $('#sKMob_orderStatus').addClass('open');
    console.info("triggered");
});

См. Образец: http://jsfiddle.net/T4yUm/298/

Может ли кто-нибудь предложить ответ.

Заранее спасибо.

Он работает так, как вы хотите, в jsfiddle.

Himanshu Upadhyay 02.05.2018 06:57

Когда он закроется, нужно добавить "class = close", удалив "class = open".

Priyanka S 02.05.2018 06:58

Select закрывается, когда находится вне DOM ... вы хотите что-то еще?

לבני מלכה 02.05.2018 06:58

Мне нужно добавить другой класс при открытии и закрытии опции выбора

Priyanka S 02.05.2018 06:59

@PriyankaS, проверьте мой ответ. Он делает то, что вам нужно.

Himanshu Upadhyay 02.05.2018 07:03

@Himanshu Upadhyay спасибо. Можете ли вы увидеть мой другой вопрос

Priyanka S 02.05.2018 07:07

@PriyankaS смотри мой ответ на то, что ты хочешь

לבני מלכה 02.05.2018 07:08

@Himanshu Upadhyay Пожалуйста, проверьте мой обновленный вопрос

Priyanka S 02.05.2018 07:32

Поля выбора - это элементы пользовательского интерфейса браузера, и мы не должны пытаться стилизовать их за пределы базовой ширины / высоты. Рекомендуем вместо этого использовать замену DOM в поле выбора.

Aaria Carter-Weir 02.05.2018 08:03
Как конвертировать HTML в PDF с помощью jsPDF
Как конвертировать HTML в PDF с помощью jsPDF
В этой статье мы рассмотрим, как конвертировать HTML в PDF с помощью jsPDF. Здесь мы узнаем, как конвертировать HTML в PDF с помощью javascript.
1
9
649
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

использовать focusout

 $("#sKMob_orderStatus, #skMob_orderDate").focusout(function(){
     $('#sKMob_orderStatus').removeClass('open');
     $('#sKMob_orderStatus').addClass('close');
    });

ИЛИ щелкните документ (означает, что раскрывающийся список закрывается)

 $(document).on('click',function(){
    $('#sKMob_orderStatus').removeClass('open');
    $('#sKMob_orderStatus').addClass('close');
});

Когда выберите какой-либо вариант

$("#sKMob_orderStatus, #skMob_orderDate").change(function() {
    $('#sKMob_orderStatus').removeClass('open');
        $('#sKMob_orderStatus').addClass('close');
});

Пока открывается выбор:

$("#sKMob_orderStatus, #skMob_orderDate").focus(function () {
        $('#sKMob_orderStatus').removeClass('open');
        $('#sKMob_orderStatus').addClass('close');
}

Для комментариев при нажатии на стрелку

$("#sKMob_orderStatus, #skMob_orderDate").on("mousedown",function(){
	$('#sKMob_orderStatus').addClass('open');
  $('#sKMob_orderStatus').removeClass('close');
	console.info("triggered");
});
 $("#sKMob_orderStatus").focusout(function(){
     $('#sKMob_orderStatus').removeClass('open');
     $('#sKMob_orderStatus').addClass('close');
    });
    var flag=false;
     $("#sKMob_orderStatus").on('click',function(){
     if (flag){
    $('#sKMob_orderStatus').removeClass('open');
    $('#sKMob_orderStatus').addClass('close');
    flag=false;
    }
    else
     flag=true;
});
.close{
  color:red;
}
.open{
  color:blue;
}
<script src = "https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select id = "sKMob_orderStatus">
    <option>a</option>
    <option>b</option>
    <option>c</option>
</select>

@PriyankaS вам нужно использовать 2 функции (одну для focusout и одну при выборе чего-либо (change)

לבני מלכה 02.05.2018 07:10

@PriyankaS вы можете выбрать одну из функций focusout или на click в документе

לבני מלכה 02.05.2018 07:14

Как добавить класс закрытия - если select уже находится в открытом состоянии, если мы щелкнем раскрывающийся список, он закроется

Priyanka S 02.05.2018 07:23

вы хотите, когда выберите, открывается, добавить класс, закрыть ?? /

לבני מלכה 02.05.2018 07:25

Я имею ввиду при выборе по фокусу ??

לבני מלכה 02.05.2018 07:25

Нет. Шаги для проверки: 1. Щелкните стрелку раскрывающегося списка, раскрывающийся список откроется - добавлен открытый класс. 2. Снова щелкните стрелку раскрывающегося списка, раскрывающийся список закрывается - класс закрытия не добавляется.

Priyanka S 02.05.2018 07:30

Я предлагаю вам сделать функцию для каждого выбора (не оба в одной функции)

לבני מלכה 02.05.2018 07:48

Да . Спасибо

Priyanka S 02.05.2018 08:16

Я очень признателен, если вы отметите как ответ, если используете мой код

לבני מלכה 02.05.2018 08:24
Ответ принят как подходящий

Добавьте еще одну функцию в свой код jquery, например:

 $("#sKMob_orderStatus, #skMob_orderDate").on("mousedown",function(){
  if ($("#sKMob_orderStatus").hasClass('open'))
  {
    $('#sKMob_orderStatus').removeClass('open');
      $('#sKMob_orderStatus').addClass('close');
  }
  else{
    $('#sKMob_orderStatus').removeClass('close');
    $('#sKMob_orderStatus').addClass('open');
  }

    console.info("triggered");
});
$(document).click(function(event) {
    if (!$(event.target).is("#sKMob_orderStatus, #skMob_orderDate")) {
        $('#sKMob_orderStatus').removeClass('open');
        $('#sKMob_orderStatus').addClass('close');
                console.info("triggered back");
    }
});

$("#sKMob_orderStatus, #skMob_orderDate").on("change" ,function(event) {
    $('#sKMob_orderStatus').removeClass('open');
    $('#sKMob_orderStatus').addClass('close');
    console.info("triggered back");
});

Вторая функция проверит, был ли нажат за пределами элемента, и она удалит класс open и добавит класс close.

1. Когда мы выбираем какую-либо опцию в раскрывающемся списке, опция выбора закрывается. В этом сценарии, как добавить class = "close"

Priyanka S 02.05.2018 07:05

2. Также, если мы закроем опцию выбора, снова щелкнув раскрывающийся список, как добавить class = "close"

Priyanka S 02.05.2018 07:06

@PriyankaS, вы проверили мой обновленный ответ. Он работает в соответствии с обоими вашими требованиями, упомянутыми выше.

Himanshu Upadhyay 02.05.2018 07:11

@ Himanshu Upadhyay Сценарий: 1. Щелкните раскрывающийся список, раскрывающийся список откроется - добавлен открытый класс. 2. Снова нажмите на раскрывающийся список, чтобы закрыть - класс закрытия не добавляется.

Priyanka S 02.05.2018 07:14

@PriyankaS вы хотите, прежде чем он закроет, добавьте класс, а затем закройте раскрывающийся список ???

לבני מלכה 02.05.2018 07:15

@ Himanshu Upadhyay Нет. В приведенном выше коде только при выборе опции и нажатии на outisde dom "Close class is added" .... Но когда select находится в открытом состоянии, если мы снова нажимаем на понижение, он закрывается - в этом сценарии закрывается класс не добавляется.

Priyanka S 02.05.2018 07:22

Привет @PriyankaS, я снова обновил свой код. Итак, теперь, когда вы снова нажимаете на select (только select, а не на 1-й вариант a), он получит близкий класс.

Himanshu Upadhyay 02.05.2018 07:57

Привет, когда мы щелкаем правой кнопкой мыши раскрывающийся список, это не раскрывающийся список, а добавление класса как открытого

Priyanka S 02.05.2018 08:06

Вы продолжаете добавлять разные сценарии @PriyankaS. Ответ дает идеальное решение в соответствии с вашим OP.

Himanshu Upadhyay 02.05.2018 08:12

да ладно @PriyankaS. Думаю, ты сможешь это сделать сейчас. У вас 16 репутации.

Himanshu Upadhyay 02.05.2018 08:36

я сделал это. Спасибо за решение

Priyanka S 02.05.2018 08:38

попробуйте этот хитрый альтернативный способ

$(function(){    
    $("#sKMob_orderStatus, #skMob_orderDate").on("focus focusout change",function(e){        
        switch(e.type){            
            case 'focus' :
                $(this).addClass('open').removeClass('close');
                break;
            case 'focusout' :
            case 'change' :
                $(this).addClass('close').removeClass('open');
                break;
        }
    });
});
.open{color:green;}
.close{color:red;}
<script src = "//ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
<select id = "sKMob_orderStatus">
    <option>a</option>
    <option>b</option>
    <option>c</option>
</select>
<select id = "skMob_orderDate">
    <option>a</option>
    <option>b</option>
    <option>c</option>
</select>

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