2011-12-15 12 views
0

所以我有一個下拉菜單,應該由Json對象值填充。代碼如下所示:特定的JavaScript代碼只使用警報語句

$("#sport").val(model.SportId); 

那麼,當我加載頁面,它不起作用。下拉列表默認爲默認的「無選擇」選項。所以我做了一個貧民區調試,並且我在model.SportId上添加了一個警報來查看發生了什麼。

而當我刷新頁面...它的工作原理。我做的唯一的事情就是

alert(model.SportId); 

它帶來了一個彈出窗口,上面寫着「1」,然後在下拉菜單中的值去這是該選項的文本選項「棒球大聯盟」(值)。而已。這是我改變的唯一的事情。在第一行代碼之前放置警報。如果我在代碼之後放置警報,它不起作用。我不知道這是爲什麼。

Json對象派生自的視圖模型具有SportId作爲可爲空的int。這有什麼關係嗎?

編輯:

好了,所以在我的剃鬚刀看來,這是JavaScript我:

<script type="text/javascript"> 
$(document).ready(function() { 
    var [email protected](Json.Encode(Model.Title)); 
    var [email protected](Json.Encode(Model)); 
    var sportsurl='@Url.Action("GetSports", "Titles")'; 
    var sportsteamsurl='@Url.Action("GetSportsTeams", "Titles")'; 

    TitleBasicEdit(model, read, sportsurl, sportsteamsurl); 
}); 

以及JavaScript函數titlebasicedit是:

function TitleBasicEdit(model, url, read, backurl, seasonsurl, autocompleteurl, urlforward, sportsurl, sportsteamsurl) { 
if ((model.TitleTypeId == 3) || (model.TitleTypeId == 8)) { 
    GetSports(sportsurl); 
    SportsDependency(sportsteamsurl); 
    alert(model.SportId); 
    $("#sport").val(model.SportId); 
    $("#sport").change(); 
    $("#hometeam").val(model.HomeSportTeamId); 
    $("#awayteam").val(model.AwaySportTeamId); 
} 
+0

你能顯示更多的標記/ js嗎? – hunter 2011-12-15 16:14:03

+0

更多代碼請 – 2011-12-15 16:14:27

回答

3

這可能與您在填充選項時執行的異步任務(如ajax請求)相關。這可能是alert()工作的原因:它停止執行oj javascript,以便任務有足夠的時間完成(無論如何,鏈接可能真的很感激)。

編輯:GetSports()函數可能是那個任務;

0

我不知道是否因爲model.SportId是一個typeof ==='數字'..?你試過這個嗎?我不知道爲什麼它會工作雖然,因爲jQuery應該足夠聰明來處理這個問題:

$("#sport").val(model.SportId+''); 

而且,試試這個:

alert($("#sport").length); 
$("#sport").val(model.SportId); 
alert($("#sport").length); 

這可能是因爲您的JavaScript之前執行HTML加載。警報()可能會給它足夠的時間來加載。