Mam formularz renderowany przez serwer, który korzysta z szablonów wąsów. Po przesłaniu formularza, jeśli wystąpi błąd, ponownie wyświetlam formularz wraz z błędami. Chcę, aby pola zostały ponownie wypełnione tymi samymi wartościami, które zostały przesłane.Korzystanie z szablonów wąsów, zaznacz odpowiednią opcję na liście wyboru zgodnie z wybraną opcją
Jednak nie jestem pewien, jak oznaczyć właściwy element z listy wyboru. Oto moje dane:
errors = {'required': ['name']},
fields = {name: 'Matt', option: 'sales'};
I użyć szablonu tak:
<form method="post" action="submitform" id="submitform">
<input type="text" id="name" name="name" value="{{fields.name}}">
<select name="contact" id="contact">
<option value="support">Support request</option>
<option value="sales">Sales help</option>
<option value="press">Press information</option>
</select>
<button type="submit" name="submit">Send message</button>
</form>
W tym przykładzie, będę oczekiwać druga opcja w select mieć atrybut selected
. Wolałbym nie używać JavaScript w tym przypadku. Jakieś sugestie?
Podoba mi się koncepcja szablonów bez logiki, dostarczanych przez Moustache, ale wciąż pakuję głowę w rzeczywiste szczegóły.
w narzędziu trochę więcej logiki, na przykład szablonów Django, mogę powiedzieć:
<option value="sales" {%if fields.option == 'sales'}selected{% endif %}>
Dzięki za wszelkie wskazówki.
Dzięki, myślę, że odpowiedź brzmi, że muszę inaczej myśleć o moich danych. W pewnym sensie komplikuje to mój kod po stronie serwera w celu uproszczenia kodu po stronie klienta. Czasami może to być trudne. – newz2000
Tak i nie. W rzeczywistości możesz połączyć logikę ze stroną klienta danych tuż przed renderowaniem szablonu. Właściwie prawie zawsze robię to, zamiast przechodzić json prosto w wąsy. – bobthecow