помогите с небольшой проблемкой в коде

Статус
В этой теме нельзя размещать новые ответы.

filmlion

Постоялец
Регистрация
28 Сен 2006
Сообщения
126
Реакции
8
Только начинаю в программировании, и вот пробую улучшить данный код.

1. как убрать надоедливое всплывающее окошко;

2. почему-то не работает разрешение только букв и цифр, помогите исправить;

3. и как сделать, чтобы форма отправлялась при нажатии с клавиатуры ENTER.

Вот сам код:

<script language="JavaScript">

function setCharAt(str, index, char) {
if(index > str.length -1) return str;
return str.substr(0, index) + char + str.substr(index +1);
}



function submit() {

var str = document.all.query.value;

if((str == '') || (str == ' ')) {
alert("Are you sure you want to search for NOTHING?");
} else {
str = str.toLowerCase();
for(i=0; i< (str.length); i++)
if(str.charAt(i) == ' ') str = setCharAt(str, i, '_');

alert(str);
top.location.href = 'http://' + str + '.site.com/';
}
}

function lettersOnly(evt) {
evt = (evt) ? evt : event;
var charCode = (evt.charCode) ? evt.charCode : ((evt.keyCode) ? evt.keyCode :
((evt.which) ? evt.which : 0));
if (charCode > 31 && (charCode < 65 || charCode > 90) &&
(charCode < 97 || charCode > 122)) {
alert("Enter letters only.");
return false;
}
return true;
}




</script>

пожалуйста, помогите исправить.
 
Ты бы хоть полностью свою форму сюда засунул...
 
1. Если надоедливое окошко это окошко с текстом, то читай что такое alert.

2. По поводу разрешения букв и цифр, то если память не изменяет то у тебя там разрешены только печатные символы. Нужно для цифр добавить диапазон charCode > 47 && charCode < 58.

3. Форма отправляется по ENTER практически всегда когда курсор находится в теге INPUT, за исключением когда в форме больше одного тега INPUT и нет кнопки submit, т.е. типа:
Код:
<form name="myform" action="" method="post">
    <input name="login" type="text" value="" /><br />
    <input name="password" type="password" value="" />
</form>
отправка формы по ENTER работать не будет.
 
Первый пункт выполнил! Спасибо.

2. Странно, что скрипт позволяет вносить и цифры и знаки любые, млин, как бы это все запретить и разрешить только буквы и цифры... и чтобы работало.
Или другой вариант, чтобы все разрешал но при выводе все, что не буквы и не цифры, просто исчезало, не выводилось. как будет выглядеть такой код?

3. Да, действительно, в форме больше одного тега INPUT, но одна из них кнопка submit - все-таки я таких много видел сайтов с формой поиска, и везде ENTER кнопка работает... как же здесь этого добиться?

вот весь код:

<script language="JavaScript">

function setCharAt(str, index, char) {
if(index > str.length -1) return str;
return str.substr(0, index) + char + str.substr(index +1);
}



function submit() {

var str = document.all.query.value;

if((str == '') || (str == ' ')) {
alert("Are you sure you want to search for NOTHING?");
} else {
str = str.toLowerCase();
for(i=0; i< (str.length); i++)
if(str.charAt(i) == ' ') str = setCharAt(str, i, '_');

top.location.href = 'http://' + str + '.site.com/';
}
}

function lettersOnly(evt) {
evt = (evt) ? evt : event;
var charCode = (evt.charCode) ? evt.charCode : ((evt.keyCode) ? evt.keyCode :
((evt.which) ? evt.which : 0));
if (charCode > 31 && (charCode < 65 || charCode > 90) &&
(charCode < 97 || charCode > 122)) {
alert("Enter letters only.");
return false;
}
return true;
}




</script>


<div align="center">
Search:
</div>

<p align="center">
<input type="text" name="query">
<input type="button" value="search" onclick="javascript:submit()">

</p>

Еще раз спасибо огромное за помощь!
 
3. Да, действительно, в форме больше одного тега INPUT, но одна из них кнопка submit - все-таки я таких много видел сайтов с формой поиска, и везде ENTER кнопка работает... как же здесь этого добиться?
У вас вообще нет формы в коде, если уж на то пошло. Сабмита и подавно нет.
 
У вас вообще нет формы в коде, если уж на то пошло. Сабмита и подавно нет.
Форма сабмитится через js, если ты не заметил...
Но на энтр ее будет не очень просто пересадить... разве что попробовать перехватить кнопку в текст инпуте...
 
Я это заметил. Но это не форма. Это два инпута один из которых эмулирует сабмит и все.
Форма - это <form>
 
я вот переделал форму:

<input type="text" name="query">
<input value="search" onclick="javascript:submit()" type="submit">

и заработал ENTER, но млин только в Internet Explorere, а вот Firefox не пашет... что делать не знаю.


ну, буду считать, что задачу выполнил по двум пунктам, кроме этого:

2. Странно, что скрипт позволяет вносить и цифры и знаки любые, млин, как бы это все запретить и разрешить только буквы и цифры... и чтобы работало.
Или другой вариант, чтобы все разрешал но при выводе все, что не буквы и не цифры, просто исчезало, не выводилось. как будет выглядеть такой код?

И если подскажете как заставить лису (Firefox) подчинять кнопке ENTER с клавиатуры, буду очень признателен.

Добавлено через 5 минут
да, попробовал поставить форму в тэги <form> </form> - она перестала работать...
 
я вот переделал форму:
и заработал ENTER, но млин только в Internet Explorere, а вот Firefox не пашет... что делать не знаю.
Приводи свои изменения полностью - телепатией тут никто не обладает, по крайней мере мне не известны точно :)
ну, буду считать, что задачу выполнил по двум пунктам, кроме этого:
2. Странно, что скрипт позволяет вносить и цифры и знаки любые, млин, как бы это все запретить и разрешить только буквы и цифры... и чтобы работало.
Или другой вариант, чтобы все разрешал но при выводе все, что не буквы и не цифры, просто исчезало, не выводилось. как будет выглядеть такой код?
Оно и не будет работать. Я не вижу где ты используешь функцию lettersOnly? Если бы разобрался с тем как работает форма и какие события в ней доступны - то увидел бы что у form есть onsubmit, на который и можно былобы повесить проверку отправки данных. Типа того:
Код:
<form name="myform" action="" onsubmit="lettersOnly(); return false;">
А в lettersOnly уже проверяешь на нужные символы и решаешь сабмитить форму или выдавать сообщение об ошибке.
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху