2013-05-27 49 views
1

我有一个javascript函数,我已经命名为refreshProjects(),它所做的是根据之前的下拉列表中选择的内容来筛选下拉列表。但是,我还需要在页面加载完成之后,直接过滤我的列表。在页面加载时调用JavaScript函数的问题

我已经尝试使用代码window.onload = refreshProjects(id)没有sucsses,但onload工作时,我使用window.onload = alert('此页已完成加载!'),所以我知道那部分关闭该脚本起作用。那么,如何在加载时调用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。

回答

2

尝试改变window.onload = refreshProjects(id);到:

window.onload = function() { refreshProjects($("#ddCustomers").val()); }; 

的Onload需要一个回调函数。您直接执行refreshProjects()并将返回值设置为onload。

但既然你似乎是使用jQuery,你可以做到以下几点:

$(function() { 
    refreshProjects($("#ddCustomers").val()); 
}); 

当文档准备好(这实际上是窗口加载之前)这将执行refreshProjects。

+0

这不起作用,id来自下拉列表ddcustomers中的选定客户,它用于确定下拉列表ddProjekts中应包含哪些项目。 – user2380907

+0

好的,那么id需要是'$(“#ddCustomers”)。val()'。我更新了答案。 – sroes

+0

这工作就像一个魅力,谢谢。 – user2380907

0

您也可以尝试使用以下命令:

$(document).ready(function() { 
    refreshProjects(id); 
}); 

这应该藏汉工作,如果你正在使用jQuery。

+0

我试过了,它没有工作。 – user2380907

+0

什么都不起作用?自动化应该可以工作,但是我想你正试图用你的参数“id”来访问一个DOM元素的值,不是吗?尝试使用'refreshProjects($('#ddcustomers').val());'或者你用来表示id的任何值。 –

相关问题