2016-05-17 14 views
-1

Gegeben ist unten mein Skript.Mein Problem ist, ich habe ein Textfeld, das ausgeblendet ist und nur angezeigt wird, wenn wir "andere" aus dropdownlist.On Display wann wählen wir geben einen Wert nach dem Post zurück, dieser Wert bleibt erhalten, aber dieses Textfeld wird unsichtbar.auf dem Postback-Dropdown-Listenwert wird jedoch beibehalten und als "andere" angezeigt und nur wenn ich einen anderen Wert von Dropdown wählen und dann wieder zu "anderen" dann ändern Textbox zusammen mit Text wird angezeigt..wie kann ich diesen versteckten oder sichtbaren Zustand davon beim Postback beibehalten?Behalten Sie den versteckten oder sichtbaren Zustand der zunächst versteckten Textbox auf Postback in MVC-Anwendung

<script type="text/javascript"> 
    $(document).ready(function() { 
    $('#SelectedCategoryId').change(function() { 
     if ($('#SelectedCategoryId').val() === '5') { 
     $('#other').show(1000); 
     $('#other').change(function() { 
      var SelectedCategory = $('#other').val().toString(); 
      $('#hiddenId').val(SelectedCategory); 
     }); 
     } 
     else { 
     $('#other').hide(1000); 
     var SelectedCategory = $('#SelectedCategoryId option:selected').text(); 
     $('#hiddenId').val(SelectedCategory); 
     } 
    }); 
    }); 
</script> 

My View

<div id="dropdown" class="form-control dropdown"> 
@Html.ValidationMessageFor(m => m.SelectedCategoryId, "*") 
@Html.LabelFor(m => m.Category, "Department :", new { style = "display:inline;" }) 
@Html.DropDownListFor(m => m.SelectedCategoryId, new SelectList(Model.Category, "Value", "Text"), "SelectCategory", new { id = "SelectedCategoryId"}) 
@Html.ValidationMessageFor(m => m.Other, "*") 
@Html.TextBoxFor(m => m.Other, new { id = "other", @class = "other" ,style = "display: none;" })    
@Html.HiddenFor(m => m.SelectedCategory, new { id = "hiddenId" }) 
</div> 
+0

Tipp: Sie sollten sich mit $ (this) 'und' this' eingeführt bekommen. – melancia

Antwort

1

das ist becaue Sie nur für den Wert der Auswahl auf "change" -Ereignis überprüfen. Das passiert nicht, wenn Sie die Seite laden. Mach es so:

function toggleHidden() { //that's your code in a function 
    if ($('#SelectedCategoryId').val() === '5') { 
     $('#other').show(1000); 
     $('#other').change(function() { 
      var SelectedCategory = $('#other').val().toString(); 
      $('#hiddenId').val(SelectedCategory); 
     }); 
    } 
    else { 
     $('#other').hide(1000); 
     var SelectedCategory = $('#SelectedCategoryId option:selected').text(); 
     $('#hiddenId').val(SelectedCategory); 
    } 
} 

$(document).ready(function() { 
    toggleHidden(); //execute the toggle on load 
    $('#SelectedCategoryId').change(toggleHidden); //execute the toggle on change 
}); 
+0

Danke für deine Mühe. Du hast mir klar gemacht, wo ich falsch gelaufen bin. :) – Rica

Verwandte Themen