Я совершенно новичок в мире HTML, Javascript и Web.Мое требование следующее:
Макет пользовательского интерфейса
username: __________ |find button|
First name: __________
Last name: __________
e-mail: __________
Выполнено
- пользователь вводит имя пользователя в текстовое поле имени пользователя и нажимает кнопку поиска
- При нажатии кнопки поиска вызовите метод Perl
getDetails("enteredUName")
- Захватите возвращаемое значение из вызванного метода Perl и заполните детали в оставшихся текстовых полях (имя, фамилия и адрес электронной почты).
У меня есть форма и логика поиска.
Теперь моя путаница заключается в том, что я должен добавить в атрибут -onClick
кнопки search .В коде для форм всегда есть вызовы javascript, написанные для других кнопок.Итак, как мне сделать вызов метода Perl после нажатия кнопки поиска и заполнить оставшиеся текстовые поля?
Обновление
Исходя из моего текущего понимания, сделал следующее:
- Определен скрытый логический параметр
isUsernameGiven
с начальным значением 0 в форме - Когда пользователь вводит что-то в текстовое поле с именем
usernameText
и нажимает кнопку поиска, вызывает javascript, который устанавливает значениеот isUsernameGiven
до 1 и расположению окна с указанным действием. - Действие направляется в файл модуля Perl через скрипт perl приложения.В этом модуле поиск выполняется по параметру
usernameText
- . Появляется новая форма с предварительно заполненными деталями.
Структура кода
ApplicationDirectory
application.pl
ModuleFolder
ModuleFile.pm
application.pl:
...
if ($action eq 'save') {
my $m = new ModuleFile();
}
...
ModuleFile.pm:
...
sub new {
# param isUsernameGiven is preserved/carried over from previous??
my $isUsernameGiven = param('isUsernameGiven');
if ($isUsernameGiven != 0) {
param(-name=>'isUsernameGiven',-value=>$isUsernameGiven);
}
if ( $action eq "add" ) {
showAddForm($self);
} elsif ($action eq "addEmp") {
showAddForm($self, $self->getUserInfoFromActiveDir(param('usernameText')));
}
}
sub getUserInfoFromActiveDir {
# search info and return employee object
...
}
sub showForm {
...
print "\n<form name=\"edit_employee_form\" method=\"post\" action=\"application.pl\" onSubmit=\"return validate_form();\">\n";
print "<input type='hidden' name='isUsernameGiven' value='0'/>\n";
print "<table class=edit style=\"width:420px;\">\n";
my $findButton = '';
if (!$id) {
$findButton = "<td>\n".button(-value=>"Find", -class=>"bigbutton",
-onClick=>"document.edit_employee_form.isUsernameGiven.value=1;getDetailsFilled();")."</td>";
}
my $fieldname = 'username';
print "<tr><td>Username:</td><td > \n".textfield(-name=>$fieldname -default=$unameValue,".
"-size=>30, -maxlength=>50)."</td>".$findButton."</tr><br>";
print "<tr><td>First Name:</td><td > \n".textfield(-name=>'first', -default=>$fnameValue, -size=>30, -maxlength=>50)."</td></tr>\n";
print "<tr><td class=edit>Last Name:</td><td > \n".textfield(-name=>'name', -default=$lnameValue, -size=>30, -maxlength=>50)."</td></tr>\n";
...
}
ModuleFile.js:
...
function getDetailsFilled()
{
if ( document.edit_employee_form.username.value == "" )
{
alert ( "Please fill in a username." );
document.edit_item_form.username.focus();
} else {
// Call Perl method here
window.location="application.pl?application=ModuleFile&action=addEmp";
}
}
...
Проблема
- При нажатии на кнопку поиска ничего не происходит.Что я пропустил?
- Кажется, что параметр
isUsernameGiven
становится неопределенным в подпункте showform
. - Значения параметров сохраняются или сбрасываются для каждого
ModuleFile
объекта? - Как получается, что значение становится неопределенным, если для значения по умолчанию
isUsernameGiven
установлено значение 0? - Правильно ли мое понимание параметров?
- Правильно ли мой текущий общий подход?