我有一个用Python编写的cgi脚本。有两个下拉菜单,然后是提交按钮。我希望能够从第一个菜单中进行选择,并根据该选择,让第二个下拉菜单动态地填充新选项。第二个菜单应该填充而不必点击任何按钮,只需从第一个菜单中进行选择。 第二个菜单还应该每次在第一个菜单上选择一个新项目时重新填充 - 再次单击提交。从上一个下拉菜单中选择动态填充下拉菜单
完成此任务的一般想法是什么?我已经实现了一些代码。它在输入是否被提供的条件下使用if/else语句。因此,在第一个下拉菜单选择完成后,页面提交,并且一个if/else语句指向显示相同表单的代码,但选择保留在下拉菜单中。我使用onchange ='this.form.submit()来提交表单而不必使用submit按钮。 目前的问题是,当选择自动提交表单时,第一次重新选择此表单似乎不起作用。所以,我不确定onchange ='this.form.submit()在第一次之后提交表单。
这是一个原型。我正朝着正确的方向走吗?或者我应该使用Ajax? (不熟悉,在所有尚未):
firstChoicesList = firstChoices()
print(""" <form method="post" action="/cgi-bin/thisScript.py">""")
# if both choices are not selected yet
if "firstChoice" not in form and "secondChoice" not in form:
# first choice drop down menu
print("""<p>first choice <select name="firstChoice">""")
for f in fristChoicesList:
print("""<option value='""" + f + """'>""" + f + """</option>""")
# second choice drop down menu
print("""</select></p>""")
print("""<p>second choice <select name="secondChoice">""")
for f in secondChoicesList: # currently contains 1 empty string
print("""<option value='""" + f + """'>""" + f + """</option>""")
print("""</select></p>""")
print("""
<p><input type="submit" />
</form>
""")
print("Please fill in the forms.")
sys.exit(1) # don't proceed with rest of code below these if/else statements
# if first choice has been selected but not the second
elif "firstChoice" in form and "secondChoice" not in form:
# <code for first drop down menu again with choice selected>
# this function takes the first choice as an argument and returns selections for the second menu
secondChoicesList = secondChoices(form["firstChoice"].value)
# <code for second drop down menu with choices populated from secondChoicesList>
print("""
<p><input type="submit" />
</form>
""")
print("Please fill in the forms.")
sys.exit(1)
# if both are selected
else:
# <same code as above except have both drop down menus save previous selections>
# proceed to run rest of cgi script
@imagineerThis答案更新 –