Версия для печати
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум на Исходниках.RU > WWW Masters. Прочее > CGI.pm + javascript = troubles


Автор: jodaka 26.04.02, 20:00
возникла проблемка небольшая с тем, что при use CGI не работает onkeydown event, короче вот кусок кода:

my $z->new CGI;
 print $z->p('some text'),
 $z->textfield( -name => 'some_name',
                -value => '11',
                -onKeyPress => 'if ((event.keyCode < 48) || (event.keyCode > 57)) event.returnValue = false;')

 Так вот, при таком коде в результате получается следующее
  <p>some text</p>
 <input type="text" name="some_name" value="11" onkeypress="if ((event.keyCode < 48) || (event.keyCode > 57)) event.returnValue = false;" />

   и такой после конвертации знаков больше меньше в < > код уже не работает в моей Мозилле (1.0 RC кстати) И в Опере, хотя прекрасно работает в эксплорере. Подскажите пожалуйста, как решить сию проблему?

з.ы. менять броузеры не предлагать, хочу, чтобы везде работало

з.ы.ы. это вообще нужно, чтобы пользователю удобней вводить инфу было. В принципе если юзер введет буковки ничего страшного не случится, но хотелось бы лишний раз не передавать заведомо неправильную инфу на сервер.

Автор: vot 27.04.02, 09:11
Выводи просто через принт.
print qq~<input type="text" name="some_name" value="11" onkeypress="if ((event.keyCode < 48) || (event.keyCode > 57)) event.returnValue = false;" />~;


Автор: jodaka 27.04.02, 13:52
нет, это не рашает проблему. Обходных путей конечно миллиард, но мне интересна причина, по которой CGI концертит < >, интересно можно ли это отключить как-нибудь в самом модуле CGI. Что говорит спецификация по этому поводу (может CGI всё верно делает и проблема в том, что броузеры некорректно спецификацию понимают)...

Автор: vot 27.04.02, 14:19
Тогда оформляй в виде функции:
onKeyPress=>"return myCoolFunc(event.keyCode);"

Автор: jodaka 27.04.02, 17:10
а что это даст? все равно мне перед этим придется ещё и саму функцию тоже печатать, а при этом CGI в ней снова поменяет знаки < >
Ну решил я попробовать _весь_ html, который у меня будет писать при помощи CGI. Оно в будущем меньше проблем будет, т.к. CGI уже сейчас мне xhtml выдает. Но вот какие-то дурацкие грабли вылезают

Powered by Invision Power Board (https://www.invisionboard.com)
© Invision Power Services (https://www.invisionpower.com)