#jquery #forms #input
#jquery #формы #ввод
Вопрос:
Здесь находится мой сайт: При вводе текста в форму ввода поиска страница обновляется и добавляет «?» к URL.
Однако, когда нажата ссылка поиска, все работает нормально. Это действительно поражает мой разум относительно того, почему он добавляет «?», поскольку я нигде не включал этот код. Предполагаемое поведение заключается в том, чтобы щелкнуть ссылку вместо обновления страницы.
$(document).ready(function() {
$("#coolIrisSearch").keydown(function(e) {
if(e.keyCode === 13) {
$("#searchbutton").click();
return false;
}
});
doCoolIrisSearch = function() {
cooliris.embed.setFeedURL( 'http://pipes.yahooapis.com/pipes/pipe.run?Search=' encodeURIComponent($('#coolIrisSearch').val()) '&_id=5f4545ce4062c36e4c5d9a8763b3167e&_render=rss' );
filter();
};
});
Ок, найден ответ. Поле формы довольно строгое. Вы не можете удалить поле ввода «отправить» и превратить его в ссылку. В противном случае вывод будет выполнять то, что он делал ранее — добавление «?» и атрибута name первого поля ввода. Это правильная версия:
<form name="searchForm">
<input type="text" name="coolIrisSearch" id="coolIrisSearch" onfocus="this.value=''" />
<input type="submit" value="search" onclick="doCoolIrisSearch();return false;" />
</form>
В то время как эта версия приведет к добавлению URL-адреса «?coolIrisSearch=» и перезагрузке страницы.
<form name="searchForm">
<input type="text" name="coolIrisSearch" id="coolIrisSearch" onfocus="this.value=''" />
</form>
Надеюсь, кто-то еще найдет это полезным.
Ответ №1:
Вместо добавления прослушивателей щелчков к кнопкам и ключевых элементов к входным данным, попробуйте просто прослушать submit
событие forms.
$("#searchForm").submit(function() {
doCoolIrisSearch();
return false;
});
Намного проще.
Редактировать: Я пытался отлаживать ваш код с помощью отличного веб-инспектора Chrome, и кажется, что вы вызываете filter
с id
иногда, а id
иногда и без. Вы можете исправить это, изменив эту строку:
document.getElementById(id).className = " active";
К этому:
if(id) {
document.getElementById(id).className = " active";
}
Комментарии:
1. @UrBestFriend: Часть вашего кода вызывала исключение. Я отредактировал свой ответ, чтобы показать вам, как это исправить.
2. Извините, что сайт отключился, но я обязательно это добавлю. Спасибо!
3. Хорошо, сайт восстановлен. Однако проблема все еще не решена.
4. @UrBestFriend:
filter
не было исправлено, как я показал, как это сделать.5. @icktoofay уверен? Я добавил это ко всем функциям фильтра.
Ответ №2:
Это потому, что вы забыли добавить атрибут name к вашему тегу ввода
<input name='search' type='text' />
попробуйте добавить это
Ответ №3:
Один из вариантов — вызвать doCoolIrisSearch() при нажатии клавиши enter, а не вызывать «щелчок» по ссылке
Комментарии:
1. Да, спасибо за это. Но проблема была не в этом. Довольно необычное добавление «?» к URL и перезагрузка. Однако я нашел исправление.