2016-07-27 27 views
0

Ich habe unter Code und ich möchte Etikett Text Basis für ausgewählte Rolle ändern.So ändern Sie Label-Wert auf drp ausgewählt Änderungsereignis in MVC

Zum Beispiel, wenn ich Admin dann in Etikett Text auswählen muss ich „Admin-Name“ usw.

ich unten Code verwenden, aber ich funktioniert nicht.

<div class="editor-field"> 
    @Html.DropDownListFor(model => model.RoleID, new SelectList(ViewBag.RoleLsit, "Id", "RoleName"), "Select Category", new { onchange = "SelectedIndexChanged()" }) 
</div> 

<div>   
    @Html.LabelFor(model => model.RoleName) 
    @Html.EditorFor(model => model.RoleName) 
    @Html.ValidationMessageFor(model => model.RoleName) 
</div> 


<script type="text/javascript"> 

function SelectedIndexChanged() { 

    var sub = document.getElementsByName("RoleName"); 
    sub.value = "Selected Role Name"; 

} 

Dank

+0

Unklar was Sie versuchen zu tun. Warum in der Welt haben Sie eine Eingabe für 'RoleName', wenn Sie bereits eine Dropdown-Liste für die' RoleID' haben? –

+0

Ich möchte nur Etikett Text basierend auf Drp ausgewählten Ereignis ändern. Im obigen Code ist nur eine Demo für diese Frage. – Hitesh

+0

Welcher _label text_? (meinst du das Label erzeugt von '@ Html.LabelFor (model => model.RoleName)'?) –

Antwort

1

Sie könnten Ihre Elemente mit @Html.IdFor, wenn Ihr js Ihrer Ansicht nach können.

function SelectedIndexChanged() { 
    //find the label 
    var label = document.querySelector('label[for="@Html.IdFor(m => m.RoleName)"]'); 

    //get the dropDown selected option text 
    var dropDown = document.getElementById("@Html.IdFor(m => m.RoleId)"); 
    var selectedText = dropDown.options[dropDown.selectedIndex].text; 

    //set the label text 
    label.innerHTML=selectedText 

} 

By the way, ein ein jQuery könnte eine "interessante" Option Hinsehen sein. Sie könnten einfach entfernen Sie die new { onchange = "SelectedIndexChanged()", dann

$('#@Html.IdFor(m => m.RoleId)').change(function() { 
    $('label[for="@Html.IdFor(m => m.RoleName)"]').text($(this).children('option:selected').text()); 

}); 
+0

Danke Sir jetzt seine Arbeit. – Hitesh

0

Funktion SelectedIndexChanged() {

document.getElementsById("RoleName").InnerHtml="Role name goes here"; 

} Sie von id Element erhalten anstelle des Namens verwenden sollten, weil, wenn Sie diesen html Helfer macht Die stark typisierten gebundenen Attribute werden zur ID dieses Steuerelements. Also in Ihrem Fall Rollenname wird die ID sein

+1

Das Label hat keine ID, wenn es von '@ Html.LabelFor' generiert wird, es hat ein' for' Attribut –