我有一个名为refreshProjects()的javascript函数,它的作用是根据前一个下拉列表中选择的内容过滤下拉列表。但是我需要在页面完成加载后直接过滤我的列表。
我尝试过使用代码window.onload = refreshProjects(id)没有任何问题,但是当我使用window.onload = alert('这个页面已经完成加载!')时onload工作,所以我知道那部分关闭了脚本有效。那么我如何在加载时调用javascript函数,我认为它会很简单,但我试过的东西都失败了。
@section Scripts {
@Scripts.Render("~/bundles/jqueryval")
<script type="text/javascript">
window.onload = refreshProjects(id); <-- Problem
$("#ddCustomers").change(function () {
refreshProjects($(this).val());
});
function refreshProjects(id) {
var projects = $("#ddProjects");
$.get('@Url.Action("FilterProjects","TimeEntry")', { customerId: id },
function (result) {
// clear the dropdown
projects.empty();
//Add a deafult "null" value
$("#ddProjects").get(0).options[0] = new Option("[ - No project - ]", "-1");
// rebuild the dropdown
$.each(result, function (i, e) {
projects.append($('<option/>').text(e.Text).val(e.Value));
});
});
}</script>
}
这适用于MVC 4.5。
答案 0 :(得分:2)
尝试将window.onload = refreshProjects(id);
更改为:
window.onload = function() { refreshProjects($("#ddCustomers").val()); };
Onload需要一个回调函数。您正在直接执行refreshProjects()并将返回值设置为onload。
但是因为您似乎正在使用jQUery,所以您可以执行以下操作:
$(function() {
refreshProjects($("#ddCustomers").val());
});
这将在文档准备就绪时执行refreshProjects(实际上是在窗口加载之前)。
答案 1 :(得分:0)
您还可以尝试使用以下内容:
$(document).ready(function () {
refreshProjects(id);
});
如果您使用的是jQuery,这应该可以使用。