2012-02-07 59 views
0

我有两个下拉列表JQuery的用于当另一个下拉列表的值更改

@using (Html.BeginForm()) { 
<fieldset> 
     <legend></legend> 
     <label>User details</label> 

<section> 
      @Html.LabelFor(model => model.Status) 
      <div> @Html.DropDownList("Statuses", Model.Statuses(), "Select status", new { required = "required" }) </div> 
      @Html.ValidationMessageFor(model => model.Status)  
     </section> 

     <section> 
      @Html.LabelFor(model => model.Roles) 
      <div> @Html.DropDownList("AvailableRoles", Model.AvailableRoles(), "Select role", new { required = "required" }) </div> 
      @Html.ValidationMessageFor(model => model.Roles)  
     </section> 

     <section> 
      <div><button>Edit</button></div> 
     </section> 
    </fieldset> 
} 

我想写一些JQuery的当值,使状态下拉菜单变化的值设置为默认值的下拉菜单设置为默认值下拉的角色已更改。任何想法如何做到这一点?

感谢,

萨钦

编辑:

生成的HTML是这样的:

<form method="post" action="/Admin/Account/EditUser?userName=user1"> <fieldset> 
     <legend></legend> 
     <label>User details</label> 

     <section> 
      <label for="UserName">User name</label> 
      <div> <input type="text" value="user1" name="UserName" id="UserName" disabled="disabled"> </div> 
      <span data-valmsg-replace="true" data-valmsg-for="UserName" class="field-validation-valid"></span>  
     </section> 

     <section> 
      <label for="Email">Email address</label> 
      <div> <input type="text" value="[email protected]" required="required" name="Email" id="Email"> </div> 
      <span data-valmsg-replace="true" data-valmsg-for="Email" class="field-validation-valid"></span>  
     </section> 

     <section> 
      <label for="Status">Status</label> 
      <div> <select required="required" name="Statuses" id="Statuses"><option value="">Select status</option> 
<option value="Approved" selected="selected">Approved</option> 
<option value="Registered">Registered</option> 
<option value="Suspended">Suspended</option> 
</select> </div> 
      <span data-valmsg-replace="true" data-valmsg-for="Status" class="field-validation-valid"></span>  
     </section> 

     <section> 
      <label for="Approved">Approved</label> 
      <div> <input type="checkbox" value="true" name="Approved" id="Approved" data-val-required="The Approved field is required." data-val="true" checked="checked"><input type="hidden" value="false" name="Approved"> </div> 
      <span data-valmsg-replace="true" data-valmsg-for="Approved" class="field-validation-valid"></span>  
     </section> 

     <section> 
      <label for="FirstName">First name</label> 
      <div> <input type="text" value="e" required="required" name="FirstName" id="FirstName"> </div> 
      <span data-valmsg-replace="true" data-valmsg-for="FirstName" class="field-validation-valid"></span>  
     </section> 

     <section> 
      <label for="LastName">Last name</label> 
      <div> <input type="text" value="e" required="required" name="LastName" id="LastName"> </div> 
      <span data-valmsg-replace="true" data-valmsg-for="LastName" class="field-validation-valid"></span>  
     </section> 

     <section> 
      <label for="Roles">Roles</label> 
      <div> <select required="required" name="AvailableRoles" id="AvailableRoles"><option value="">Select role</option> 
<option value="Buyer" selected="selected">Buyer</option> 
<option value="Seller">Seller</option> 
</select> </div> 
      <span data-valmsg-replace="true" data-valmsg-for="Roles" class="field-validation-valid"></span>  
     </section> 

     <section> 
      <div><button>Edit</button></div> 
     </section> 
    </fieldset> 
</form> 
+0

http://stackoverflow.com/questions/292615/how-can-i-set-the-value-of-a-dropdownlist-using-jquery – Samich 2012-02-07 15:45:30

+1

@Samich:不太一样,现在问题是it – musefan 2012-02-07 15:50:06

+1

由于您正在编写JQuery(客户端代码)来解决您的问题,因此您应该发布生成的实际HTML标记,而不是用于生成它的服务器端代码。 – Servy 2012-02-07 16:01:21

回答

5

使用更改事件......

$("#AvailableRoles").change(function(){ 
    $("#Statuses").val("New Value"); 
}); 

Here is a working example

+0

'$(#AvailableRoles“)'不是寻找一个带有AvailableRoles的id属性而不是名称属性的元素吗? – Nope 2012-02-07 15:51:18

+0

这似乎不起作用 – 2012-02-07 15:53:25

+3

@FrançoisWahl:那些MVC Html助手会设置ID和Name属性是相同的 – musefan 2012-02-07 15:53:29

4

您可以使用change事件来完成此操作。

$('select[name="AvailableRoles"]').change(function(){ 
    $('select[name="Statuses"]')[0].selectedIndex = 0;//Will select first option 
}); 

我认为mvc helper方法会呈现id属性,它也与name字段相同。在这种情况下,如果你使用id选择器会更好。

$('#AvailableRoles').change(function(){ 
    $('#Statuses')[0].selectedIndex = 0;//Will select first option 
}); 
+0

这不是比@ musefan的代码慢? – tempid 2012-02-07 15:53:27

+0

这似乎没有工作要么 – 2012-02-07 15:55:08

+0

@enigma - 如果元素呈现ID字段,那么是的,我们可以使用ID选择器。 – ShankarSangoli 2012-02-07 15:57:10

相关问题