2016-07-27 10 views
0

Ich habe ein Dropdown-Menü, das die Seite mit einigen neuen Daten neu lädt, nachdem die Benutzerauswahl vorgenommen wurde. Wenn eine Änderung/Auswahl und Einreichung im Dropdown-Menü vorgenommen wird, wird die Seite neu geladen und das Dropdown-Feld wird leer. Ich möchte halten Sie die Dropdown-Daten nach der Einreichung und zeigen Sie, was der Benutzer ausgewählt hat. Vielen Dank im Voraus für jede Hilfe, ich bin neu hier.jQuery - Dropdown-Liste wird leer nach Änderung und Formular senden

$(document).ready(function() { 
    $("#ddlConsumer").change(function() { 
     var selected = $("#ddlConsumer :selected").text(); 
     localStorage.setItem("selected", selected); 
     $("#paymentform").submit(); 

    }); 
}); 

var selectedConsumer = localStorage.getItem("selected"); 
console.log(selectedConsumer); 
$("#ddlConsumer").val(selectedConsumer); 

Der HTML-Teil:

<td> 
    <div class="form-group"> 
     <label class="col-sm-4 control-label">Consumer: <span>*</span> </label> 
     <div class="col-sm-6"> 
      @Html.DropDownList("ConsumerID", (SelectList)ViewBag.Consumer, new { id = "ddlConsumer", @class = "form-control"}) 
     </div> 
    </div> 
</td> 
+0

Ich weiß nicht, wie Ihre Dropdown-Text/Werte aussehen, aber ich sehe, dass Sie die .text() und nicht die .val() speichern. Dann setzen Sie das Dropdown-Menü val = den Text der ausgewählten Option. Wenn der Text nicht mit dem Wert übereinstimmt, erhalten Sie nicht die ausgewählte Option – mhodges

+0

Auch alle Ihre js-Code oben gezeigt sollte in der doc.ready() sein. Der $ ("# ddlConsumer") .val (selected) könnte ausgeführt werden, bevor Razor die Dropdown-Liste – mhodges

+0

rendert. Ich habe .val() hinzugefügt, bin aber am selben Ort gelandet. Habe auch nur versucht, alles in doc.ready() hinzuzufügen, mit Ausnahme der letzten Zeile. Kann es immer noch nicht herausfinden. :( – doooville

Antwort

0

Eines sollte man sich bewusst sein, ist die Tatsache, dass das HTTP-Protokoll staatenlos ist. Das bedeutet, dass nach dem Senden des Formulars die Seite neu geladen wird und die Werte verloren gehen. Um dies zu lösen, können Sie zwei Dinge tun:

1 - Senden Sie die asyncronous mit $ ajax. Wie:

2 - Holen Sie sich die Werte im Backend und senden Sie sie als Ergebnis der Post zurück. Dies variiert je nachdem, welche Technik Sie als Backend verwenden, aber in .net MVC wäre wie:

[HttpPost] 
public ActionResult Index(string field) 
{ 
    ViewBag.Value = field; 
    return View(); 
} 

Und im Blick:

<input name="field" id="field" type="text" value="@ViewBag.Value" /> 

Hoffnung, das hilft.

Verwandte Themen