2014-01-23 87 views
0

我在我看來這個腳本(this是源):DropdownList不傳遞值,但觸發腳本。 DropdownListFor傳遞價值,但不會觸發腳本

<script type="text/javascript" src="../../Scripts/jquery-1.7.1.js"></script> 
<script type="text/javascript"> 

    $(document).ready(function() { 
     $("#state").prop("disabled", true); 
     $("#country").change(function() { 
      if ($("#country").val() != "Please select") { 
       var options = {}; 
       options.url = "/companies/getbolag"; 
       options.type = "POST"; 
       options.data = JSON.stringify({ country: $("#country").val() }); 
       options.dataType = "json"; 
       options.contentType = "application/json"; 
       options.success = function (states) { 
        $("#state").empty(); 
        for (var i = 0; i < states.length; i++) { 
         $("#state").append("<option>" + states[i] + "</option>"); 
        } 
        $("#state").prop("disabled", false); 
       }; 
       options.error = function() { alert("Fel vid bolagshämtning!"); }; 
       $.ajax(options); 
      } 
      else { 
       $("#state").empty(); 
       $("#state").prop("disabled", true); 
      } 
     }); 
    }); 

</script> 

填充它基於什麼是在第一次選擇第二個下拉列表。級聯下拉。

這的HtmlHelper觸發腳本,但提交時省略了值:

@Html.DropDownList("country", ViewData["kundLista"] as SelectList) 

這一次則正好相反,其提交的值,但不會觸發腳本:

@Html.DropDownListFor(model => model.Kund, ViewData["kundLista"] as SelectList) 

我需要它同時觸發腳本並提交值。我該怎麼做呢?

回答

1

由於你的財產的名稱是Kund,第二個幫手創建一個選擇元素,其idname字段設置爲Kund。另一方面,您的腳本使用id country來解決此選擇。所以,你有兩個選擇:

腳本中使用
  1. 更改ID來#Kund

    @Html.DropDownList("Kund", ViewData["kundLista"] as SelectList), new {@id="country"}) 
    
+0

我想:

$("#Kund").change(function() { if ($("#Kund").val() != "Please select") { 
  • 使用具有正確的名稱和編號第一幫手提示nr 1,它的作品就像一個魅力!非常感謝! - 儘快接受答案! –

  • 0

    如果您查看呈現的html下拉列表中是否創建了與您的腳本不匹配的Kund ID。我建議把你的下拉菜單一類是不會改變

    @Html.DropDownListFor(x => x.Kund, selectlist, new { @class = "Kund" }) 
    

    然後在您的腳本您選擇從#country改變.Kund

    下拉列表中會配合下拉到您的模型,這就是爲什麼你獲得傳遞的價值。對於另一個下拉如果你創建一個列表並將其傳遞給視圖,你可以在那裏設置選定的項目,並希望爲你設置下拉列表