시 변 경 트 ( ) 이 리 거 트 벤 정 ( ▁setting ▁ 거 트 ▁change ) ▁event ▁trigger 설 리 정 ) 시 's value with val() function
val() 함수를 사용한 의 값What is the easiest and best way to trigger change event when setting the value of select element.선택 요소의 값을 설정할 때 변경 이벤트를 트리거하는 가장 쉽고 좋은 방법은 무엇입니까?
I've expected that executing the following code
다음 코드를 실행하는 것이$('select#some').val(10);
$('select#some'), val(10);
or
또는$('select#some').attr('value', 10);
$('select#some'), 특성 값', 10);
would result in triggering the change event, which i think is pretty logic thing to be done.변화 이벤트를 촉발하는 결과를 초래할 것입니다. 저는 이것이 꽤 논리적인 일이라고 생각합니다. Right?그렇죠?
Well, it isn't the case.사실은 그렇지 않습니다. You need to triger change() event by doing this
이 작업을 수행하여 변경() 이벤트를 트리거해야 합니다.$('select#some').val(10).change();
$('select#some'), val(10), change(),
or
또는$('select#some').val(10).trigger('change');
$('select#some').val(10).trigger(변경)';
but i'm looking for some solution which would trigger change event as soon as select's value is changed by some javascript code.하지만 저는 select의 값이 몇몇 자바스크립트 코드에 의해 변경되는 즉시 변경 이벤트를 촉발할 수 있는 해결책을 찾고 있습니다.I had a very similar issue and I'm not quite sure what you're having a problem with, as your suggested code worked great for me.저도 비슷한 문제가 있었는데 당신이 제안한 코드가 저에게 잘 먹혔기 때문에 당신이 무엇에 문제가 있는지 잘 모르겠습니다. It immediately (a requirement of yours) triggers the following change code.사용자의 요구 사항에 따라 즉시 다음 변경 코드가 트리거됩니다.
$('#selectField').$('#selectField').change(function(){
change(함수:{) if($('#selectField').val() == 'N'){
if($('#selectField').val() == 'N'){ $('#secondary$('#보조Input').'입력').hide();
숨김 »; } else {
그렇지 않으면 { $('#secondary$('#보조Input').'입력').show();
show();}
}});});
Then I take the value from the database (this is used on a form for both new input and editing existing records), set it as the selected value, and add the piece I was missing to trigger the above code, ".change()".
그런 다음 데이터베이스에서 값을 가져와 선택한 값으로 설정하고 누락된 조각 ".change()"를 추가하여 위의 코드를 트리거합니다.$('#selectField').val(valueFromDatabase).$('#selectField').val(데이터베이스에서 값).change();
변경 »;
So that if the existing value from the database is 'N', it immediately hides the secondary input field in my form.따라서 데이터베이스의 기존 값이 'N'이면 내 양식의 2차 입력 필드가 즉시 숨겨집니다.One thing that I found out (the hard way), is that you should have
제가 알게 된 한 가지는 (어려운 방법으로) 당신이 해야 한다는 것입니다.$('#selectField').$('#selectField').change(function(){
change(함수:{) // some content ...약간의 내용...
});
});
defined BEFORE you are using
사용하기 전에 정의됨$('#selectField').val(10).trigger('change');
$('#selectField').val(10).trigger('change');
or
또는 $('#selectField').val(10).change();$('#selectField'), val(10), change();
The straight answer is already in a duplicate question:정답은 이미 중복 질문에 있습니다. Why does the jquery change event not trigger when I set the value of a select using val()?val()을 사용하여 선택 값을 설정할 때 jquery change 이벤트가 트리거되지 않는 이유는 무엇입니까?
As you probably know setting the value of the select doesn't trigger the change() event, if you're looking for an event that is fired when an element's value has been changed through JS there isn't one.선택 값을 설정해도 변경() 이벤트가 트리거되지 않는다는 것을 알고 있을 것입니다. JS를 통해 요소 값이 변경되었을 때 실행되는 이벤트를 찾고 있는 경우에는 이벤트가 없습니다.
If you really want to do this I guess the only way is to write a function that checks the DOM on an interval and tracks changed values, but definitely don't do this unless you must (not sure why you ever would need to)
만약 당신이 정말로 이것을 하고 싶다면, 유일한 방법은 DOM을 주기적으로 확인하고 변경된 값을 추적하는 기능을 쓰는 것이지만, 꼭 해야 하는 경우가 아니라면 절대로 이것을 하지 마세요(왜 그렇게 해야 하는지 확실하지 않습니다).Added this solution:이 솔루션을 추가했습니다. Another possible solution would be to create your own .val() wrapper function and have it trigger a custom event after setting the value through .val(), then when you use your .val() wrapper to set the value of a <select> it will trigger your custom event which you can trap and handle.또 다른 가능한 해결책은 .val() 래퍼 함수를 만들고 .val()을 통해 값을 설정한 후 사용자 지정 이벤트를 트리거하도록 한 다음, .val() 래퍼를 사용하여 <select>의 값을 설정하면 트랩하고 처리할 수 있는 사용자 지정 이벤트를 트리거합니다. Be sure to return this, so it is chainable in jQuery fashionAs jQuery won't trigger native change event but only triggers its own change event.jQuery는 기본 변경 이벤트를 트리거하지 않고 자체 변경 이벤트만 트리거하므로 jQuery 방식으로 체인이 가능하도록 이를 반환해야 합니다. If you bind event without jQuery and then use jQuery to trigger it the callbacks you bound won't run !jQuery 없이 이벤트를 바인딩한 다음 jQuery를 사용하여 이벤트를 트리거하면 바인딩된 콜백이 실행되지 않습니다!
The solution is then like below (100% working) :
솔루션은 다음과 같습니다(100% 작동).var sortByvarsortBySelect = document.= 문서를 선택합니다.querySelector("select.querySelector("선택").your-class");
귀하의 클래스";sortBy정렬 기준Select.value = "new value";
Select.value = "새 값";sortBy정렬 기준Select.dispatchEvent(new Event("change"));Select.dispatchEvent(새 이벤트("변경"));
I separate it, and then use an identity comparison to dictate what is does next.
저는 그것을 분리하고, 신원 비교를 사용하여 다음에 무엇을 하는지 지시합니다.$("#selectField").change(function(){
$("#selectField"). 변경(function(){ if(this.value === 'textValue1'){ $(".contentClass1").fadeIn(); }
if(this.value === 'textValue1'){$(.contentClass1").fadeIn(); } if(this.value === 'textValue2'){ $(".contentclass2").if(이 .value === 'textValue2'){$(.contentclass2").fadeIn(); }
페이드인(); }});});
Reference언급URL : https://stackoverflow.com/questions/5760873/trigger-change-event-when-setting-selects-value-with-val-functionURL : https://stackoverflow.com/questions/5760873/trigger-change-event-when-setting-selects-value-with-val-function