Запуск зміни події <select> за допомогою jquery


145

Чи все-таки я можу викликати подію зміни у вікні вибору на завантаженні сторінки та вибрати певний варіант.

Також функція виконується додаванням тригера після прив’язки функції до події.

Я намагався виводити що - щось на зразок цього

<select class="check">
<option value="one">one</option>
<option value="two">two</option>
</select>

$(function(){
    $('.check').trigger('change'); //This event will fire the change event. 
    $('.check').change(function(){
      var data= $(this).val();
      alert(data);            
    });
});

http://jsfiddle.net/v7QWd/1/


Ви хочете встановити певну опцію для завантаження? чи ти хочеш викликати зміну?
Мансе

Чи можете ви розширити остаточне рішення. Ви намагаєтесь мати примусовий варіант, коли сторінка завантажується, або виберіть інший варіант, коли вибрано щось конкретне?
Меттью Річ

привіт, дякую за Ваш відгук, я зміг вирішити проблему і задокументував її.
кишаніо

Відповіді:


287

Використовуйте, val()щоб змінити значення (а не текст) та trigger()вручну запустити подію.

Обробник події зміни повинен бути оголошений перед тригером.

Ось зразок

$('.check').change(function(){
  var data= $(this).val();
  alert(data);            
});

$('.check')
    .val('two')
    .trigger('change');

Також після зміни параметра я хотів виконати функцію зміни події. wrt це . Поле попередження повинно виконуватись.
кишаніо

@KishanThobhani вам слід зателефонувати після додавання обробника. див. зразок.
Йосиф

7
Важливою частиною цього рішення є: Обробник події зміни ОБОВ'ЯЗКОВО бути оголошений перед тригером (має сенс ...), в моєму випадку це була проблема, дякую!
Ларзан

Це допомогло Спасителем, спасибі @ Джозеф
Дивья

визначена функція зміни перед тим, як ви користуєтесь, вирішила мою проблему. Дякую.
Kamlesh

27

Щоб вибрати варіант, скористайтеся .val('value-of-the-option')елементом вибору. Щоб запустити елемент зміни, використовуйте .change()або .trigger('change').

Проблеми у вашому коді - це кома, а не крапка, $('.check'),trigger('change');і те, що ви викликаєте її перед прив’язкою обробника події.


10
$('#edit_user_details').find('select').trigger('change');

Це дозволить змінити пункт, що випадає, тег html, що випадає id="edit_user_details".


6

Ще одне робоче рішення для тих, хто був заблокований обробкою тригерів jQuery, що дозування на рідні події буде, як нижче (100% працює):

var sortBySelect = document.querySelector("select.your-class"); 
sortBySelect.value = "new value"; 
sortBySelect.dispatchEvent(new Event("change"));

1
Я спробував усе вищесказане, але тільки для мене це працює. Я думаю, тому що мій вибір був усередині vue. Дякую @ Mohamed23gharbi!
Тілліто

1
Те ж саме. Це рішення, яке я шукав протягом години. Дякую.
мберна

1
Це має бути відповіддю!
MARS

1

Надайте посилання у значенні опції тегу

<select size="1" name="links" onchange="window.location.href=this.value;">
   <option value="http://www.google.com">Google</option>
   <option value="http://www.yahoo.com">Yahoo</option>
</select>

1

Якщо ви хочете зробити кілька перевірок, використовуйте цей спосіб

 <select size="1" name="links" onchange="functionToTriggerClick(this.value)">
    <option value="">Select a Search Engine</option>        
    <option value="http://www.google.com">Google</option>
    <option value="http://www.yahoo.com">Yahoo</option>
</select>

<script>

   function functionToTriggerClick(link) {

     if(link != ''){
        window.location.href=link;
        }
    }  

</script>

0

На основі відповіді Мохамеда23гарбі:

function change(selector, value) {
    var sortBySelect = document.querySelector(selector);
    sortBySelect.value = value;
    sortBySelect.dispatchEvent(new Event("change"));
}

function click(selector) {
    var sortBySelect = document.querySelector(selector);
    sortBySelect.dispatchEvent(new Event("click"));
}

function test() {
    change("select#MySelect", 19);
    click("button#MyButton");
    click("a#MyLink");
}

У моєму випадку, коли елементи були створені vue, це єдиний спосіб, який працює.


0

Ви можете спробувати нижче код, щоб вирішити свою проблему:

За замовчуванням виберіть перший варіант: jQuery ('. Select'). Find ('option') [0] .selected = true;

Спасибі, Кетан Т

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.