2013-12-16 66 views
0

我想填充一個使用jQuery的SELECT,並在它填充後設置我想要的值。 我與ASP.NET MVC工作5用jQuery填充後設置SELECT值

問題是價值不被設置

這裏是我的代碼:

$(document).ready(function() { 
    //DropDownLists Initialization 
    ListCategories(); //Populates the dropdownlist 
    PreviousCategory(); //Sets DropDownList value to previous state (posted value) 
}); 
function PreviousCategory() { 
    var previousCategory = $("#PreviousCategory").val(); 
    if (previousCategory != null && previousCategory != '') { 
     $("#IdCategory").val(previousCategory); 
    } 
} 

$( 「#PreviousCategory」)是一個隱藏的輸入,它會在下一個代碼回傳後得到它的值服務器端:

@if (ViewBag.Category!=null) 
{ 
    @Html.Hidden("PreviousCategory",(object)ViewBag.Category); 
} 

兩個函數分開工作,Drop DownList獲得完美填充,但值不會被設置。 如果我從另一個事件觸發PreviousCategory()(例如單擊按鈕),該值將被完美設置。

我不認爲有必要發佈ListCategories()代碼,因爲它運行良好,你可以假設它填充下拉列表,但如果有人發現它需要讓我知道,我會編輯帖子。

編輯:

這裏是ListCategories()代碼:

function ListCategories(){ 
    _idOrganigrama = $("#IdOrganigrama").val() 
    _idTipoPedido = $("#IdTipoPedido").val() 
    data = { idOrganigrama: _idOrganigrama, idTipoPedido: _idTipoPedido } 
    $.post("ListCategories/", data, function (categoryList) { 
     $("#IdCategoria").empty(); 
     $(categoryList).each(function() { 
      $("<option />", { 
       val: this.Id, 
       text: this.Descripcion 
      }).appendTo($("#IdCategory")); 
     }); 
    }); 
} 

順便說一句... $( 「#IdCategory」)是選擇。

+0

回調基礎的解決方案,你可以發佈)ListCategories的內容(?無論是那個還是'​​#idCategoria'的渲染HTML# – damienc88

+0

1.在PreviousCategory中添加調試並檢查previousCategory值。 2.你是否確定previousCategory存在於分類列表中? – alexmac

+0

我的代碼是西班牙文,所以我把它翻譯成英文,我忘了把#idCategoria改成#idCategory,我現在編輯這個問題併發布你問我的代碼。 – Juanso87

回答

1

問題似乎在ListCategories,您可能會使用像ajax這樣的異步函數從服務器獲取數據並填充select。

所以使用這樣

$(document).ready(function() { 
    //DropDownLists Initialization 
    ListCategories(PreviousCategory); //Populates the dropdownlist 
    //Sets DropDownList value to previous state (posted value) after the values are loaded 
}); 

function PreviousCategory() { 
    var previousCategory = $("#PreviousCategory").val(); 
    if (previousCategory != null && previousCategory != '') { 
     $("#IdCategoria").val(previousCategory); 
    } 
} 

function ListCategories(callback) { 
    //your ajax request to populate the select 
    $.ajax({}).done(function() { 
     //populate the select 

     //then at the last call the callback method which will set the value 
     callback() 
    }) 
}; 
+0

我會試試這個,謝謝。 – Juanso87

+0

它工作完美,非常感謝你! – Juanso87