При выборе изменения получить значение параметра

Я видел множество вопросов по этому поводу, которые дают аналогичные ответы, а именно:

Однако, если следовать их подходам, это ничего не дает мне?

 

$(function() {
  $('.blogFilter__form').on('change', function(){
    // location.href = $(this).val();
    console.log($(this).val());
  });
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<form class="blogFilter__form">
  <select class="blogFilter__select">
    <option class="blogFilter__option" value="">Topics</option>
    <option class="blogFilter__option" value="/topics/how-to/">How to</option>
    <option class="blogFilter__option" value="/topics/news/">News</option>
  </select>
</form>

 

Я пытаюсь перенаправить пользователя на основе выбранного значения option.

В настоящее время запуск console.log($(this).val()); ничего не регистрирует для меня?

Вы пробовали $('.blogFilter__select') вместо $('.blogFilter__form')   —  person Freddy    schedule 15.06.2021

См. также:  Использование атрибута авторизации с аутентификацией на основе настраиваемых утверждений
Понравилась статья? Поделиться с друзьями:
IT Шеф
Комментарии: 2
  1. Freddy

    Это потому, что у вас есть прослушиватель событий изменения в самой форме, а не в выборе. Если вы измените функцию для прослушивания изменяемого .blogFilter__select, она должна работать:

    $(function() {
      $('.blogFilter__select').on('change', function(){
        // location.href = $(this).val();
        console.log($(this).val());
      });
    });
    

    Раньше вы регистрировали «значение» формы, которая пуста, а не значение выбора.

    Еще один момент, несколько не связанный с этим. Вероятно, вам следует использовать идентификатор вместо класса для этого типа функции. Причина, по которой я говорю это, заключается в том, что если у вас есть несколько вариантов выбора в одной и той же форме. Вы можете использовать class="blogFilter__select" для их стилизации, но если вы хотите прослушать подобное изменение, оно может вести себя не так, как вы предполагали.

    Я также добавил дополнительный способ регистрации значения выбора при изменении формы, если это то, что вы хотели. (Хотя он закомментирован, поэтому раскомментируйте его и поэкспериментируйте с ним, если хотите его использовать)

    // Function only listens on pageSelect
    // (use # instead of . to choose id instead of class)
    // test with .blogFilter__select and you'll see it logs both
    $(function() {
      $('#blogFilter__pageSelect').on('change', function() {
        console.log($(this).val());
      });
    });
    
    // Alternatively, if you wanted to listen for whenever the form was changed, but log the value of the select, you can do it by using the id of the select instead of 'this':
    // $(function() {
    //   $('#blogFilter__form').on('change', function() {
    //     console.log($('#blogFilter__pageSelect').val());
    //   });
    // });
    /* style affects both <select>s*/
    .blogFilter__select {
      display: block;
      margin-bottom: 1em;
      color: red;
      font-weight: bold;
    }
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
    <form id="blogFilter__form" class="blogFilter__form">
      <select id="blogFilter__pageSelect" class="blogFilter__select">
        <option class="blogFilter__option" value="">Topics</option>
        <option class="blogFilter__option" value="/topics/how-to/">How to</option>
        <option class="blogFilter__option" value="/topics/news/">News</option>
      </select>
      <select id="blogFilter__secondSelect" class="blogFilter__select">
        <option class="blogFilter__option" value="1">One</option>
        <option class="blogFilter__option" value="2">Two</option>
        <option class="blogFilter__option" value="3">Three</option>
      </select>
    </form>

  2. Freddy

    Если вы зарегистрируете $this, вы увидите, что это форма blogfilter__, которая не имеет значения. Вместо этого используйте событие, чтобы получить целевое значение.

    $(function() {
      $('.blogFilter__form').on('change', function(e){
        console.log(e.target.value);
      });
    });
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
    <form class="blogFilter__form">
      <select class="blogFilter__select">
        <option class="blogFilter__option" value="">Topics</option>
        <option class="blogFilter__option" value="/topics/how-to/">How to</option>
        <option class="blogFilter__option" value="/topics/news/">News</option>
      </select>
    </form>

Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: