隐藏/显示多个WTForm标签
问题描述:
如何隐藏/显示多个平台标签。目前我正在这样做。隐藏/显示多个WTForm标签
HTML:
{{ render_field(var_1, class = "class_1") }}
{{ render_field(var_2, class = "class_1") }}
{{ render_field(var_3, class = "class_1") }}
JQuery的:
$('label[for="var_1"]').show();
$('label[for="var_2"]').show();
$('label[for="var_3"]').show();
有没有更好的办法?例如分配一个类到标签?
谢谢!
答
如果您想显示或隐藏某个特定原因的字段,您必须执行两项操作。 首先显示你想要的字段并隐藏你不想要的字段。它可以使用jQuery和CSS来完成。
$("any id or class").click(function(){
$('#parent_div_of_field_id_that_you_want_to_show').css('display','block');
$('#parent_div_of_field_id_that_you_want_to_show').attr('data-parsley-required','false') //if you are using parsley for client side validation
$('#parent_div_of_field_id_that_you_want_to_hide').css('display','none');
$('#parent_div_of_field_id_that_you_want_to_hide').attr('data-parsley-required','true') //if you are using parsley for client side validation
现在你必须处理服务器端验证。你必须停止验证这些隐藏的字段。为此,对wtforms使用StopValidation。
from wtforms.validators import StopValidation
def functionName(form, field):
if form.your_field_name.data==None:
field.errors[:] = []
raise StopValidation()
而这个功能是这样
name=StringField("Name", [functionName, validators.DataRequired("Name is required")])
这看起来并不像HTML给我。但他们都有班'class_1'吗?你可以瞄准那个。 – Taplar
这只提供了一个类到输入框,而不是标签本身。非常感谢 – user3167654
因此,从逻辑上讲,您可以接受任何通过的课程,并在课程标签上添加class +'Label'并将其作为目标。但正如我所说的,不是发布创建代码的代码,而是向我们展示脚本正在运行的生成标记。 – Taplar