을, 당신이 설명하는 것입니다 : 당신이 다음 CGI 스크립트가 실행됩니다 제출 버튼을 클릭하면, 양식에 입력 한 매개 변수를 입력 한 다음 다시 작성하고 다른 값으로 양식을 다시 인쇄하십시오.
그래서 이런 종류의 작업을 수행하는 완벽한 방법은 아닙니다. 간단한 폼 요소 대체를 위해서는 클라이언트 측에서 javascript를 사용해야합니다.이 경우 cgi 백엔드 스크립트가 필요하지 않습니다.) CGI 스크립트의 모양을 보겠습니다.
먼저 양식 작성 방법을 알고 있어야합니다. 인쇄물로 "어렵게"쓰는다고 가정 해 봅시다. 스크립트가 수행해야하는 작업은 입력을 구문 분석 한 다음 값을 출력에 추가하는 것입니다.
use CGI;
my $q = CGI->new;
# get the value from the popup/html select
my $popup_value = $q->param('popup_menu'); # name of the <select name="..."> in your html
# ...
# writing the form
print $q->header;
# some more prints with form etc.
print textarea(-name => 'text_area',
-default => $popup_value // '', # will use empty string on first call
);
# Don't turn off autoescaping !
BTW하는 선택 옵션의 값은 짧은 지표가 아닌 전체 텍스트 (심지어이 문자의 어느 정도까지 할 수 있습니다)하기위한 것입니다. 따라서 텍스트 영역에 인쇄 할 적절한 값을 가진 해시 또는 배열을 만들고 선택 옵션에 0, 1, 2 값을 제공하는 것을 생각해보십시오.
my @text_values = ('', 'First text', 'second text', 'third text');
my $popup_value = $q->param('popup_menu') || 0; # default index.
# now use 1,2,3, ... as values in your popup_menu options
# ...
print textarea(-name => 'text_area',
-default => $text_values[$popup_value]);
의미가 없습니다. 양식을 제출 한 후 어떻게 "popup_menu에서 다른 요소를 선택할 수 있습니까?" 그 시점에는 메뉴 나 HTML 페이지가 없습니다. – ikegami
Perl은 서버 측입니다. Javascript는 클라이언트 측입니다. – shaun5
워크 플로를 따르지 않고 CGI 개체의 내용을 삭제하려면 다음과 같이하십시오. $ cgi-> param (-name => 'foo', - value => ''); –