form + enter + function
Есть такая форма.....
<FORM name="myForm" onSubmit="poisk(example);"> <INPUT type="text" style="width: 259px" id="example" name="example" value="Начните вводить тег" onfocus="this.style.backgroundColor='#F0F0F0';this.value='';" onblur="this.style.backgroundColor='#FFFFFF';if (this.value != '') {this.onfocus = function(){this.style.backgroundColor='#F0F0F0';};} else this.value='Начните вводить тег';"> <BR><br> <INPUT type="button" value="Начать поиск" onclick="poisk(example);" ;=""> Вопрос я хочю что бы при нажатие на энтер у меня выполнялась функция poisk(example); если я нажимаю кнопку Начать поиск она работает а при нажатие на энтер она не хочет работать почему то вот сама функция function poisk(example) { var m_jak1 = example.value; if (m_jak1=='Начните вводить тег') {alert('Не указан тег');} else{ m_jak1=m_jak1.toLowerCase(); m_jak=m_jak1.split(','); var mas_post=new Array(); var m_teg=new Array(); for (i=0; i<m_jak.length; i++) { if (m_jak[i].indexOf(' ')!=-1) { var m_teg1=new Array(); m_teg1=m_jak[i].split(' '); var m_x=new Array(); for (ii=0; ii<=kol_post; ii++) { m_x[ii]=0; } for (ij=0; ij<m_teg1.length; ij++) { for (ii=0; ii<=kol_post; ii++) { m_teg=teg[ii].split(','); for (iii=0; iii<m_teg.length; iii++) { if (m_teg1[ij]==m_teg[iii]) { m_x[ii]=m_x[ii]+1; } } } } for (ii=0; ii<=kol_post; ii++) { if (m_x[ii]==m_teg1.length) { y=0; for (j=0; j<mas_post.length; j++) { if (mas_post[j]==ii) { y=y+1; } } if (y==0) { mas_post.push(ii); } } } } else { for (ii=0; ii<=kol_post; ii++) { m_teg=teg[ii].split(','); for (iii=0; iii<m_teg.length; iii++) { if (m_jak[i]==m_teg[iii]) { y=0; for (j=0; j<mas_post.length; j++) { if (mas_post[j]==ii) { y=y+1; } } if (y==0) { mas_post.push(ii); } } } } } } var m=new Array(); for (j=0; j<mas_post.length; j++) { m[j]=mas_post[j]; mas_post[j]=perevod(m[j]); } for (j=0; j<mas_post.length; j++) { for (i=0; i<mas_post.length-1; i++) { if (mas_post[i]>mas_post[i+1]) { b=mas_post[i]; mas_post[i]=mas_post[i+1]; mas_post[i+1]=b; } } } val=mas_post.join(","); if (mas_post.length==0) {alert('такого тега(тегов) нет'); return false;} else { window.location.href="http://aniland.3dn.ru/index/0-27?1,"+val; return true; } } } знаю функция жеская но она работает... Подскажите в чем просчет уже момозГ сломал |
Цитата:
|
ну который в голове =) уже вместо мозга стал момозГом :-D
|
Цитата:
|
Попробуйте
<INPUT type="submit" value="Начать поиск" onclick="poisk(example);"> |
и че это такое?... мне не кнопку надо сделать... она у меня уже есть... мне надо что написал я слово в поиске нажал энтер и начался поиск
|
хелп....
|
Боже! Что вообще делает этот безумно обфусциорванный кусок кода?
|
Цитата:
|
Цитата:
давайте представим, что в этой функции будет элементарно написано function poisk(example) { alert ('РАБОТАЕТ МАЗА ФАК'); } |
Поставлю вопрос иначе. При нажатии энтер в форме тебя автоматически перебрасывает на, например,
http://javascript.ru?example=input.value input.value это у нас то что написано в <INPUT type="text"> как сделать так, что бы она не переходила на эту страницу, а вообще игнорировала нажатие энтер в форме? |
все покорил наконец то надо было просто добавить после функции return false
<FORM name="myForm" onSubmit="poisk(example); return false"> |
возник другой вопрос я добавил еще один <INPUT type="text"> и у меня перестала запускаться функция по нажатию на энтер...
Или функция может срабатывать только когда в форме один инпут? |
Эээ, чувак. Щас объясню что именно ты делаешь не совсем так.
Итак, у нас тут форма поиска по тэгам аниме-сайта. js делает что-то страшное с тем, что вводит пользователь (кажется, ищет дубли тэгов или что-то в этом роде). Затем ты делаешь перенаправление при помощи location.href. Это не очень правильно. Почему? Да, потому что форма сама это может. Если ты хочешь, чтобы форма переходила по ссылке http://javascript.ru/?example=input.value, тебе надо сделать как-то так: <form action="http://javascript.ru/" method="get" onsubmit="prepareForm(this)"> <!-- value подставлен для наглядности --> <input type="text" name="example" value="input.value" /> <input type="submit" value="Поиск"/> </form> Вооот. Таким образом перед отправкой формы у тебя будет срабатывать ф-ция prepareForm, которая будет как-то изменять поля формы. Это раз. Два. Почему форма не шлется по энтеру? Все очень просто: у тебя нет кнопки submit. Без нее форма по энтеру шлется только если в ней одно текстовое поле. Добавь кнопку. Можно даже спрятать ее при помощи display: none; Все должно будет работать. |
Часовой пояс GMT +3, время: 23:37. |