我使用Flask和Jinja2模板来创建自定义表单。在这些表单中,我需要表单的一部分在字段值更改时进行更改。你知道吗
基本上,我的表单有一个select#content-type
,在这里我可以选择一个内容类型,然后是一个fieldset#content
,当select
的值改变时,它的HTML应该改变。根据select
的值,我有几个HTML模板。你知道吗
我的JS看起来像这样:
<script type="text/javascript">
$(function () {
$("select#content-type").change(function () {
switch ($(this).val()) {
case "type1":
var html = "{% include "type1.html" | escape %}";
$("fieldset#content").html(html);
break;
// ...
}
});
});
</script>
问题是,escape
过滤器在include
语句中不起作用,safe
。我怎样才能做到这一点,或者有没有更好的方法来做我想做的事情?你知道吗
有一些解决办法。你知道吗
实现这一点的一个简单方法是使用一个helper CSS类隐藏表单中所有依赖于内容类型的部分,例如
.hide {display: none;}
,当客户端选择某个内容时,只需从相应的div中删除这个类:$("div#type1").removeClass("hide");
另一种方法是使用Ajax请求加载表单的内容类型相关部分。您可以定义一个类似
/loadform
的路由,其中服务器读取相应的模板文件并打印它。然后可以将响应HTML注入到原始表单中。你知道吗第三种方法是在客户端选择内容类型时使用javascript提交部分填充的表单,然后呈现完整的表单。你知道吗
相关问题 更多 >
编程相关推荐