如果已选择所选框,如何在加载页面时运行onchange功能

Nic*_*ick 3 javascript jquery reload

我遇到一个问题,我有一个ajax驱动的页面,当用户从一个简单的下拉菜单中选择一些东西时绘制:

<select id = "selectdepartment">
    <option id = "default">Select an option...</option>
    ....
</select>
Run Code Online (Sandbox Code Playgroud)

并使用jquery绘制页面的其余部分.change():

$('#selectdepartment').change(function(){

});
Run Code Online (Sandbox Code Playgroud)

然后运行一些ajax到PHP脚本.一切都很好,问题是当我提交一个用ajax(使用$_SERVER['PHP_SELF'];)绘制的表单,数据被提交,页面重新加载,页面被清除但选择框仍然保留在原处.用户必须移动到另一个选项,然后返回到最初选择的选项以重新启动.change().太糟糕了.

我可以通过在我的所有表单中传递一个php变量来解决这个问题,然后检查每个页面加载时是否看到变量集,如果它是绘制页面部分,那么这会导致相当混乱的代码并且它不太理想.

必须有一种方法可以使用jquery库来完成这项工作,尽管我对javascript语言的了解并不是我想要的.如果有人有任何有用的提示,请分享,不要为我做,但我不会这样学习:)

编辑:带.trigger的代码

$('#selectdepartment').change(function(){
var department = $('#selectdepartment').val();
var day = $('#data').data('day');
var month = $('#data').data('month');
var year = $('#data').data('year');
//alert (department);

if(department === "Select an option..."){
    $('.hiddenuntildepartmentisselected').css({"display":"none"});
}
else{
$('.hiddenuntildepartmentisselected').css({"display":"block"});
}

showpoints(department);
drawpointstable(department, day, month, year);
displaytheuseresforselecteddepartment(department, '');

$('#sendthedepartment').val(''+department+'');
$('#hiddendepartmentidforaddinganewpoint').val(''+department+'');

}).trigger('change');//end run functions
Run Code Online (Sandbox Code Playgroud)

Ant*_*ist 6

您可以使用该.trigger()函数change在页面加载时立即触发事件处理程序:

$('#selectdepartment').change(function() {
    // code here
}).trigger('change');
Run Code Online (Sandbox Code Playgroud)

或者如果你需要通过JavaScript/jQuery在其他地方调用它:

$('#selectdepartment').trigger('change'); // or just .change() as a shorthand
Run Code Online (Sandbox Code Playgroud)