我有一个使用Mustache模板的服务器呈现表单。提交表单时,如果出现错误,我会重新显示表单以及一些错误。我希望使用提交的相同值重新填充字段。
但是,我不确定如何从选择列表中标记正确的项目。这是我的数据:
errors = {'required': ['name']},
fields = {name: 'Matt', option: 'sales'};
我使用这样的模板:
<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>
在此示例中,我希望select中的第二个选项具有selected
属性。在这种情况下,我不想使用Javascript。有什么建议吗?
我喜欢Mustache提供的无逻辑模板的概念,但我仍然围绕着实际细节。
在具有更多逻辑的工具中,例如Django模板,我可能会说:
<option value="sales" {%if fields.option == 'sales'}selected{% endif %}>
感谢您的任何提示。
答案 0 :(得分:7)
Mustache并非完全无逻辑。它只是 逻辑少。
在模型上为每个名为“selected”的行创建一个字段,然后输出如下:
<form method="post" action="submitform" id="submitform">
<select name="contact" id="contact">
{{#options}}
<option name="{{name}}" {{selected}}>{{name}}</option>
{{/options}}
</select>
<button type="submit" name="submit">Send message</button>
</form>
你的模型看起来像这样(这是Java BTW,你可以做同样的事情:
public class Option {
public String name;
public String selected;
public Option(String name, boolean seleted){
this.name = name;
this.selected = seleted ? "selected" : "";
}
}
答案 1 :(得分:1)
根据ryber的建议,我添加了一个库来处理这个问题。它包括一些注释(即将发布的更新文档)