質問する
155870 次
8 に答える
97
残念ながら、change
イベントを手動で発生させる必要があります。そして、イベント コンストラクターを使用することが最善の解決策になります。
var select = document.querySelector('#sel'),
input = document.querySelector('input[type="button"]');
select.addEventListener('change',function(){
alert('changed');
});
input.addEventListener('click',function(){
select.value = 2;
select.dispatchEvent(new Event('change'));
});
<select id="sel" onchange='alert("changed")'>
<option value='1'>One</option>
<option value='2'>Two</option>
<option value='3' selected>Three</option>
</select>
<input type="button" value="Change option to 2" />
もちろん、Event
コンストラクターは IE ではサポートされていません。したがって、次のようにポリフィルする必要がある場合があります。
function Event( event, params ) {
params = params || { bubbles: false, cancelable: false, detail: undefined };
var evt = document.createEvent( 'CustomEvent' );
evt.initCustomEvent( event, params.bubbles, params.cancelable, params.detail );
return evt;
}
于 2015-02-04T14:56:57.403 に答える
3
これを試して:
<select id="sel">
<option value='1'>One</option>
<option value='2'>Two</option>
<option value='3'>Three</option>
</select>
<input type="button" value="Change option to 2" onclick="changeOpt()"/>
<script>
function changeOpt(){
document.getElementById("sel").options[1].selected = true;
alert("changed")
}
</script>
于 2013-10-12T03:18:00.153 に答える
3
イベントの作成とディスパッチ全体が機能しますが、onchange
属性を使用しているため、作業が少し簡単になります。
http://jsfiddle.net/xwywvd1a/3/
var selEl = document.getElementById("sel");
selEl.options[1].selected = true;
selEl.onchange();
ブラウザーのイベント API (addEventListener、IE の AttachEvent など) を使用する場合は、他の人が既に指摘しているように、イベントを作成してディスパッチする必要があります。
于 2015-02-04T19:21:55.327 に答える
-1
onclick イベントで選択したオプションを変更した後、手動でイベントを発生させることができます。document.getElementById("sel").onchange();
于 2013-10-12T03:15:35.463 に答える