jquery를 사용하여 트리거 변경 이벤트 <select>


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/


로드시 특정 옵션을 설정 하시겠습니까? 또는 변경 이벤트를 시작하고 싶습니까?
Manse

최종 솔루션을 확장 할 수 있습니까? 페이지가로드 될 때 옵션을 적용하려고하거나 특정 항목이 선택 될 때 다른 옵션을 선택하려고합니까?
Matthew Riches

안녕하세요, 귀하의 의견에 감사드립니다. 문제를 해결하고 문서화했습니다.
kishanio

답변:


287

사용 val()받는 변화 (텍스트가 아닌) 및 trigger()수동으로 이벤트를 발사.

변경 이벤트 핸들러는 트리거 전에 선언해야합니다.

여기 샘플이 있습니다

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

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

또한 옵션을 변경 한 후 변경 이벤트 기능을 실행하고 싶었습니다. wrt 이것 . 경고 상자가 실행되어야합니다.
kishanio

@KishanThobhani 당신은 핸들러를 추가 한 후에 그것을 호출해야 합니다. 샘플을 참조하십시오.
요셉

7
이 솔루션의 중요한 부분은 다음과 같습니다. 변경 이벤트 핸들러는 트리거 전에 선언해야합니다 (의미가 있습니다 ...). 제 경우에는 문제였습니다. 감사합니다!
Larzan

구주로 도움을 주셨습니다. @Joseph
Divya

정의 변경 기능을 사용하기 전에 내 문제를 해결했습니다. 감사.
Kamlesh

27

옵션을 선택하려면 select .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!
Tillito

1
여기도 마찬가지입니다. 이것이 내가 한 시간 동안 찾고있는 솔루션입니다. 감사.
mberna 21:40에

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

Mohamed23gharbi의 답변을 바탕으로 :

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;

고마워, Ketan T

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.