jqueryを使用して$(document).readyのドロップダウンの変更イベントをトリガーしたいと思います。
ユーザーの詳細ページに国と州のカスケードドロップダウンがあります。C#を使用してMVCで国と州の値(ユーザーIDに基づいてDBから取得)を設定するにはどうすればよいですか?
jqueryを使用して$(document).readyのドロップダウンの変更イベントをトリガーしたいと思います。
ユーザーの詳細ページに国と州のカスケードドロップダウンがあります。C#を使用してMVCで国と州の値(ユーザーIDに基づいてDBから取得)を設定するにはどうすればよいですか?
回答:
私はそれほど多くのJQueryを知りませんが、この構文でネイティブイベントを発生させることができると聞きました。
$(document).ready(function(){
$('#countrylist').change(function(e){
// Your event handler
});
// And now fire change event when the DOM is ready
$('#countrylist').trigger('change');
});
trigger()またはchange()を呼び出す前に、changeイベントハンドラーを宣言する必要があります。宣言しないと、起動されません。@LenielMacaferiに言及していただきありがとうございます。
詳細はこちら。
trigger()
またはchange()
この回答に正しく示されているように、変更イベントハンドラーを宣言する必要があります。つまり、イベントハンドラーコードが呼び出しの下に表示されても、何も起こりません。:)
これを試して:
$(document).ready(function(event) {
$('#countrylist').change(function(e){
// put code here
}).change();
});
変更イベントを定義し、すぐにトリガーします。これにより、イベントハンドラーが呼び出される前に定義されます。
元のポスターに答えるのに遅れるかもしれませんが、他の誰かが省略表記の恩恵を受ける可能性があり、これはjQueryの連鎖などに従います
これを試して:
$('#id').change();
私のために働きます。
値を設定するとともに1行で:
$('#id').val(16).change();
ドロップダウンをリンクしようとしている場合、それを行う最良の方法は、事前に作成された選択ボックスを返すスクリプトと、それを要求するAJAX呼び出しを用意することです。
必要に応じて、jQueryのAjaxメソッドのドキュメントを次に示します。
$(document).ready(function(){
$('#countrylist').change(function(e){
$this = $(e.target);
$.ajax({
type: "POST",
url: "scriptname.asp", // Don't know asp/asp.net at all so you will have to do this bit
data: { country: $this.val() },
success:function(data){
$('#stateBoxHook').html(data);
}
});
});
});
次に、IDが「stateBoxHook」の状態選択ボックスの周囲にスパンを設定します
または、ドロップダウンリスト自体にonchange属性を設定することもできます。その場合、onchangeはこのような特定のjquery関数を呼び出します。
<input type="dropdownlist" onchange="jqueryFunc()">
<script type="text/javascript">
$(function(){
jqueryFunc(){
//something goes here
}
});
</script>
これがお役に立てば幸いです。このコードは単なるドラフトであり、どのIDEでもテストされていないことに注意してください。ありがとう
何らかの理由で、jQuery
ここで提供されている他のソリューションは、コンソールからスクリプトを実行するときに機能しましたが、Chromeブックマークレットからトリガーされたときに機能しませんでした。
幸い、このVanilla JSソリューション(triggerChangeEvent
関数)は機能しました。
/**
* Trigger a `change` event on given drop down option element.
* WARNING: only works if not already selected.
* @see /programming/902212/trigger-change-event-of-dropdown/58579258#58579258
*/
function triggerChangeEvent(option) {
// set selected property
option.selected = true;
// raise event on parent <select> element
if ("createEvent" in document) {
var evt = document.createEvent("HTMLEvents");
evt.initEvent("change", false, true);
option.parentNode.dispatchEvent(evt);
}
else {
option.parentNode.fireEvent("onchange");
}
}
// ################################################
// Setup our test case
// ################################################
(function setup() {
const sel = document.querySelector('#fruit');
sel.onchange = () => {
document.querySelector('#result').textContent = sel.value;
};
})();
function runTest() {
const sel = document.querySelector('#selector').value;
const optionEl = document.querySelector(sel);
triggerChangeEvent(optionEl);
}
<select id="fruit">
<option value="">(select a fruit)</option>
<option value="apple">Apple</option>
<option value="banana">Banana</option>
<option value="pineapple">Pineapple</option>
</select>
<p>
You have selected: <b id="result"></b>
</p>
<p>
<input id="selector" placeholder="selector" value="option[value='banana']">
<button onclick="runTest()">Trigger select!</button>
</p>