2012-05-10 1 views
0

그래서 Perl에서 CGI 프로그래밍을 처음 접했습니다. 질문은 간단합니다. CGI에서 텍스트 필드의 내용을 삭제할 수 있습니까?Perl CGI - 텍스트 필드의 내용을 삭제하려면 어떻게해야합니까?

popup_menu, 제출 버튼 및 텍스트 필드 (영역)가있는 코드를 작성해야합니다.

제출 버튼을 클릭하면 프로그램이 popup_menu 중 하나에서 값을 읽습니다. 이 내용을 텍스트 필드에 복사 한 다음 popup_menu에서 다른 요소를 선택하고 (물론 제출 버튼을 클릭하면) 텍스트 필드에 새 내용을 쓰게하여 이전 내용을 바꿉니다.

저는 perldoc.perl.org가 CGI 프로그래밍에 관한 정보 만 제공한다고 생각합니다. ! 내가 :(

어떤 도움이 approciate 것 ... 테마에 질문을 많이 줄 것 같아요

+3

의미가 없습니다. 양식을 제출 한 후 어떻게 "popup_menu에서 다른 요소를 선택할 수 있습니까?" 그 시점에는 메뉴 나 HTML 페이지가 없습니다. – ikegami

+1

Perl은 서버 측입니다. Javascript는 클라이언트 측입니다. – shaun5

+1

워크 플로를 따르지 않고 CGI 개체의 내용을 삭제하려면 다음과 같이하십시오. $ cgi-> param (-name => 'foo', - value => ''); –

답변

1

을, 당신이 설명하는 것입니다 : 당신이 다음 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]);