Остановить обновление страницы при нажатии "Ввод" в элементе ввода текста
Есть ли способ остановить полное обновление веб-страницы при нажатии кнопки ввода в элементе ввода текста?
Я пытаюсь создать поле поиска, из которого я могу получить текст при нажатии клавиши Enter, чтобы отфильтровать объекты и отобразить только те, которые содержат текст из поля поиска.
Я попробовал следующее, чтобы попытаться поймать кнопку ввода, но она не работает.
function setupSearchField() {
document.getElementById("searchField").onKeyDown = function(event) {
var holder;
if (window.event) {
holder = window.event.keyCode;
} else {
holder = event.which;
}
keyPressed(holder);
}
}
function keyPressed(key) {
if (key == 13) {
event.cancelBubble = true;
return false;
}
}
4 ответа
Если элемент input находится внутри формы, и эта форма фактически не отправляется на сервер, удалите форму.
Причина, по которой ваш код не работает, потому что onkeydown
событие должно быть в нижнем регистре, и вы на самом деле ничего не возвращаете в него (попробуйте return keyPressed(holder);
- или просто переместите keyPressed
код функции в setupSearchField
, поскольку мне кажется бессмысленным иметь его в качестве отдельной функции).
Это происходит, когда есть только один ввод текста, независимо от того, имеет ли ваша кнопка (если есть) type="submit" или нет. Это задокументировано здесь. http://www.w3.org/MarkUp/html-spec/html-spec_8.html Таким образом, как было предложено ранее другими людьми, вам нужно просто остановить это поведение по умолчанию.
Просто добавьте следующий код javascript на страницу Visualforce:
<script type='text/javascript'>
function stopRKey(evt)
{
var evt=(evt) ? evt : ((event) ? event : null);
var node=(evt.target)?evt.target:((evt.srcElement)?evt.srcElement:null);
if ((evt.keyCode == 13) && (node.type=="text")) {return false;}
}
document.onkeypress = stopRKey;
</script>
Ваше поле поиска находится внутри элемента? Затем, нажав "enter", запускается событие submit для элемента формы.
В этом случае вы можете обработать свою фильтрацию, определив onsubmit в элементе формы.
<form id="searchForm">
<input type="text" name="search" />
</form>
<script>
document.getElementById('searchForm').onsubmit = function() {
var searchValue = this.search.value;
// process
return false;
}
</script>
Может быть, как-то так.