2017-07-27 127 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")])