我想使用jquery触发$(document).ready中下拉列表的change事件。
我在用户详细信息页面上有一个国家和州的层叠下拉列表。我如何使用C#在MVC中设置国家和州的值(基于用户ID从数据库获取)。
我想使用jquery触发$(document).ready中下拉列表的change事件。
我在用户详细信息页面上有一个国家和州的层叠下拉列表。我如何使用C#在MVC中设置国家和州的值(基于用户ID从数据库获取)。
Answers:
我不太了解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()
至如本答案中正确显示的那样声明更改事件处理程序,也就是说,如果事件处理程序代码出现在调用之后,则什么都不会发生!:)
试试这个:
$('#id').change();
为我工作。
与设置值一起一行:
$('#id').val(16).change();
如果您尝试链接下拉列表,则最好的方法是使用一个脚本返回预构建的选择框和一个请求它的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”的状态选择框周围有一个范围
由于某些原因,jQuery
此处提供的其他解决方案在从控制台运行脚本时可以使用,但是从Chrome Bookmarklets触发后,它对我不起作用。
幸运的是,这个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>