[英]How to expose a form when a radio button is checked?
考慮以下示例 html 模板,
<html>
<body>
<input type="radio" name="x">x</input><br>
<input type="radio" name="y">y</input><br>
<form name="form1"> Form1... </form>
<form name="form2"> Form2... </form>
</body>
</html>
渲染模板的flask代碼,
from flask import (Flask, render_template)
app = Flask(__name__)
@app.route('/')
def main():
return render_template('sample.html')
一旦模板由燒瓶渲染,我想顯示form1
,如果x
單選按鈕被選中, form2
如果y
單選按鈕是檢查。 是否可以使用jinja
模板語法來做到這一點?
類似的東西
<html>
<body>
<input type="radio" name="x">x</input><br>
<input type="radio" name="y">y</input><br>
{% if x %}
<form name="form1"> Form1... </form>
{% elif y %}
<form name="form2"> Form2... </form>
{% else %}
Something...
{% endif %}
</body>
</html>
jinja
模板中是否也有類似於document.getElementById()
東西?
Jinja 等模板語言僅適用於后端輸入。 它們用於呈現初始 HTML。 要在頁面加載后對頁面進行主動控制,您將需要使用 javascript(和一點點 css)。 首先,您將需要一個 css 類,該類告訴表單在您決定使用 display: none 屬性顯示它之前保持在視圖之外。 讓我們稱這個類為“隱藏的”。 你的 css 看起來像
.hidden {
display: none;
}
其次,為了讓兩個表單都開始隱藏,您需要將該類添加到它們的 HTML 聲明中,例如:
<form class="hidden" name="form1"> Form1... </form>
<form class="hidden" name="form2"> Form2... </form>
然后,您需要向每個單選按鈕添加 Javascript 偵聽器。 onchange 事件非常適合這種情況。 當任一單選按鈕更改狀態時,您將需要刪除該“隱藏”類或將其添加到正確的表單中。 這里我使用按鈕的“ checked ”屬性來查看它們是剛變成 ON 狀態還是 OFF 狀態:
radioX.addEventListener('change',(event)=>{
if (event.target.checked){
form1.classList.remove("hidden");
form2.classList.add("hidden");
} else {
form1.classList.add("hidden");
form2.classList.remove("hidden");
}
});
最后,您的整個 HTML 文件將類似於:
<html>
<head>
<style>
.hidden{
display:none;
}
</style>
</head>
<body>
<input id="radio-x" type="radio" name="form-toggle">x</input><br>
<input id="radio-y" type="radio" name="form-toggle">y</input><br>
<form class="hidden" name="form1"> Form1... </form>
<form class="hidden" name="form2"> Form2... </form>
<script>
const form1 = document.querySelector("form[name='form1']");
const form2 = document.querySelector("form[name='form2']");
document.querySelector('#radio-x').addEventListener('change',(event)=>{
if (event.target.checked){
form1.classList.remove("hidden");
form2.classList.add("hidden");
} else {
form1.classList.add("hidden");
form2.classList.remove("hidden");
}
});
document.querySelector('#radio-y').addEventListener('change',(event)=>{
if (event.target.checked){
form1.classList.add("hidden");
form2.classList.remove("hidden");
} else {
form1.classList.remove("hidden");
form2.classList.add("hidden");
}
});
</script>
</body>
</html>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.