2017-07-27 96 views
0

如何隐藏/显示多个平台标签。目前我正在这样做。隐藏/显示多个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(); 

有没有更好的办法?例如分配一个类到标签?

谢谢!

+0

这看起来并不像HTML给我。但他们都有班'class_1'吗?你可以瞄准那个。 – Taplar

+0

这只提供了一个类到输入框,而不是标签本身。非常感谢 – user3167654

+0

因此,从逻辑上讲,您可以接受任何通过的课程,并在课程标签上添加class +'Label'并将其作为目标。但正如我所说的,不是发布创建代码的代码,而是向我们展示脚本正在运行的生成标记。 – Taplar

回答

0

如果您想显示或隐藏某个特定原因的字段,您必须执行两项操作。 首先显示你想要的字段并隐藏你不想要的字段。它可以使用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")])