我通常是C/C++程序員,但我的工作認爲所有軟件都是相同的,所以我必須建立一個網頁才能將信息輸入到mysql數據庫中。由於其他程序員之一爲我們所有的內部網頁使用Perl CGI,因此我決定爲了一致性而使用它。Perl CGI和Javascript:動態依賴下拉列表
我有幾個不同的哈希來存儲我需要從數據庫創建下拉列表的信息。這裏是什麼哈希包含:
%issues
(IssueID:發行)(發行編號以議題名稱)
%step
(StepID:步驟)(stepid步驟的名稱)
%stepissueid
(StepID: IssueID)(連接不同的步驟來採取特定的問題)
的Perl/HTML的問題下拉的問題產生下拉工作 *第二個依賴下拉不*
#begin Issue Drop Down
print "<td valign=\"top\" colspan=1><font $c2> Issue:<br> ";
$temp = scalar keys %issue;
print "<select id='Issue1' name=\"optone\"";
print "onchange=\"setOptions(document.myform.optone.options[document.myform.optone.selectedIndex].value);\">";
foreach my $x (sort(keys %issue))
{
if ($x == $issueid)
{
print "<OPTION selected=selected value=\"$x\"> $issue{$x}</OPTION>";
}
else
{
print "<OPTION value=\"$x\"> $issue{$x}</OPTION>";
}
}
print "</select>";
print "<select name=\"opttwo\" size=\"1\">";
print "<option>Please select one of the options above first</option>";
print "</select>";
的JavaScript setOptions:因爲我不知道他們有多少元素或什麼是我創建了一個循環來創建的JavaScript和多個if語句
print "<head>";
print "<script language=\"JavaScript\">";
print "<!--";
print "function setOptions(chosen){";
print "var selbox=document.myform.opttwo;";
print "selbox.options.length = 0;";
foreach my $x (sort(keys %issue))
{
print "if (chosen == $x)";
{
foreach my $y (sort(keys %step))
{
if ($stepissueid{$y} == $x)
{
print "selbox.options[selbox.options.length] = new";
print "Options('$step{$y}','$y');";
}
}
}
}
print "}";
print "//-->";
print "</script>";
print "</head>";
編輯:我敢肯定有一個看不見的控制角色,讓事情變得混亂起來,因爲我從字面上重新輸入了它,一切都奏效了。現在我遇到的問題是我從數據庫接收信息,並且我想要自動選擇步驟下拉菜單,如果已經選擇了一個選項(我知道有很多閒置時間,我還有其他更重要的項目上工作)
我嘗試添加了opttwo選擇HTML下onselect=\"setOptions(document.myform1.optone.options[document.myform1.optone.selectedIndex].value);\">
但什麼也沒做(試圖在第二個下拉時叫我JS funcition自動填充)
什麼是實際和什麼是期望的輸出? –
Acctual:下拉1包含3個問題,下拉2僅包含「請首先選擇上面的選項之一」 –
期望:下拉1包含3個問題,下拉2包含解決在下拉列表中選擇的特定問題的步驟1 %step) –