Статьи | Скрипты | Книги | Программы | Шаблоны | Рассылки сайта | Юмор

Выпуск №25
Если вам необходима информация по всем тегам HTML, то можете подписать на соответствующую рассылку нашего сайта: Все теги от <a> до <xmp>.

Уже разобранные теги: A, ACRONYM, ADDRESS, APPLET, AREA, B, BASE, BASEFONT, BDO, BGSOUND, BIG, BLOCKQUOTE, BODY, BR, BUTTON, CAPTION, CENTER, CITE, CODE,COL, COLGROUP, COMMENT, DL, DT, DD.
Переход на страницу
Автор: Алексей Голубев.

Имеется такая задача: Необходимо создать на странице, текстовое поле, в которое будет вводится название страницы сайта и после нажатия Enter будет осуществляться переход на данную страницу. Добавить кнопку по нажатию на которой будет осуществляться тоже действие.

Приведу сразу пример странички, скрипт работает в IE и Opera без проблем, в Firefox возникает проблема с обработкой событий onkeypress и onkeydown, буду благодарен, если кно-нибудь поделиться решением данной проблемы.

<html>
<head>
<script>
function go() {
switch (navigator.appName) {
case "Microsoft Internet Explorer":
{
if (document.all.text1.value!==""){
document.location.href='http://'+document.all.site.value+'/'+document.all.text1.value+'.html';
}
break;
}
case "Opera":
{
if (document.all.text1.value!==""){
document.location.href='http://'+document.all.site.value+'/'+document.all.text1.value+'.html';
}
break;
}
default:
{
if (document.getElementById("text1").value!=="") {
document.location.href='http://'+document.getElementById("site").value+'/'+document.getElementById("text1").value+'.html';
}
break;
}
}
}
function kgo() {
if (window.event.keyCode==13) {
go();
}
}
</script>
</head>
<body>
<form onsubmit="return false;
">
<input id="text1" type="text" onkeypress="kgo()">
<input id="site" type="hidden" value="www.frnet.info">
<input type="button" onClick="go()" value="Перейти">
</form>
</body>
</html>


Теперь приведу краткое описание выше изложенного кода.

Имеем две функции go() и kgo(). Первая функция осуществляет проверку на заполненость поля и переход, вторая - проверку код нажатой клавиши, если он равен 13, что соответствует именно клавише Enter, то происходит вызов оснойной функции go(). Код клавиши передается в свойстве keyCode объекта event.

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

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

Данный скрипт иллюстрирует обработку нажатия кнопок на клавиатуре. Можно было бы добавить на каждую клавишу свою функци.

А вот еще один скрипт (приведу его без описания), который так же демонстрирует подобную обработку (взят из MSDN, под IE работает точно, за остальные браузеры не ручаюсь).

<SCRIPT>
function fnTrapKD(){
   if(oTrap.checked){
      oOutput.innerText+="[trap = " + event.keyCode + "]";
      event.returnValue=false;
   }
   else{
      oOutput.innerText+=String.fromCharCode(event.keyCode);
   }
}
</SCRIPT>
<INPUT TYPE="checkbox" ID="oTrap">
<INPUT ID="oExample" TYPE="text" onkeydown="fnTrapKD()"><br>
<TEXTAREA ID="oOutput" ROWS="10" COLS="50">
</TEXTAREA>
Скопируйте и посмотрите что он делает и, если интересно, разберите его работу самостоятельно.
При публикации информации из рассылки Вам следует указывать действующую ссылку на нее.
Архив рассылок сайта | Письмо автору | Гостевая книга


Rambler's Top100
Hosted by uCoz