Как сравнить предыдущее значение раскрывающегося списка с текущим значением, используя jquery - PullRequest
0 голосов
/ 05 мая 2020

У меня есть раскрывающийся список, и я хочу сравнить его предыдущее и текущее значение. Если предыдущее значение совпадает с текущим значением (я имею в виду, что никаких изменений не произошло), я бы сделал еще один logi c в операторе if.

 function filter() {
        var id= "ctl00_plchldContent_dropdown1";
        var current;
        var latest;
        var dropdown = document.getElementById(element.id);
        dropdown.onchange('change', function () {
            current = $('#' + id + ' option:selected').val().trim();
        }).change(function () {
            latest = $('#' + id + ' option:selected').val().trim();
        });

       if(current != previous){
           //logic here
         }
    });

Хотя раскрывающийся список не равен нулю, я получаю сообщение «Ожидается при ошибке объекта события onchange». Как я могу это исправить? Я очень новичок в jquery кстати. Спасибо

Ответы [ 2 ]

1 голос
/ 05 мая 2020

Вы можете объявить global переменную для хранения выбранного элемента, после изменения установить selected как newSelected значение

var selected = $("#ctl00_plchldContent_dropdown1").val();

$("#ctl00_plchldContent_dropdown1").change(function() {

  let newSelected = $("#ctl00_plchldContent_dropdown1").val();
  if (newSelected != selected) {
    alert("Changed");
    selected = newSelected;
  }
});

var selected = $("#ctl00_plchldContent_dropdown1").val();

$("#ctl00_plchldContent_dropdown1").change(function() {
  
  let newSelected = $("#ctl00_plchldContent_dropdown1").val();
  if (newSelected != selected) {
    alert("Changed");
    selected = newSelected;
  }
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<select id="ctl00_plchldContent_dropdown1">
  <option value="0">0</option>
  <option value="1">1</option>
  <option value="2">2</option>
  <option value="3">3</option>
</select>
0 голосов
/ 05 мая 2020

Вы можете сделать это, сохранив ранее выбранную опцию в атрибуте данных при выборе и сравнив текущую опцию с выбранной опцией. Также необходимо иметь событие click() в параметрах вместо события change() при выборе, поскольку оно не будет вызываться, если выбранный параметр является тем же параметром, что и раньше.

$("#ctl00_plchldContent_dropdown1 option").on("click", function() {
  let selected = $(this).val();
  if ($(this).parent("select").attr("data-previous") == selected) {
    alert("Same value as previously.")
  }
  $(this).parent("select").attr("data-previous", selected);
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<select id="ctl00_plchldContent_dropdown1">
  <option value="0">0</option>
  <option value="1">1</option>
  <option value="2">2</option>
  <option value="3">3</option>
</select>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...