URL перенаправления на основе значения не всегда работает - PullRequest
1 голос
/ 12 июля 2020

Я новичок в JavaScript, я написал код для перенаправления пользователя на другую страницу в зависимости от того, что они набирали в строке поиска.

Странно, иногда это работает, иногда не t (половина половины), кто-то может знать, что могло вызвать это?

my HTML

<form class="form-inline my-2 my-lg-0">
    <input id="inputName" class="form-control mr-sm-2" type="search"
           placeholder="Search">
    <button id="searchBtn" class="btn btn-outline-success my-2 my-sm-0" onclick="searchUser()" type="button">
        Search
    </button>
</form>

my javascript

function searchUser() {
    window.open("/user/" + String(document.getElementById('inputName').value));
}

Обновление: Спасибо, что указали на двойной идентификатор, я удалил дополнительный идентификатор, но проблема осталась.

Это могло произойти со всей строкой, например, «hsy», иногда это работает, иногда нет t.

При поиске по URL http://127.0.0.1:8000/user/hsy, если он не работает, URL просто отображается как http://127.0.0.1:8000/user/hsy? с дополнительным знаком вопроса в конце URL.

Ответы [ 2 ]

0 голосов
/ 12 июля 2020

Спасибо @Niet the Dark Absol, его идея - правда.

Я не должен смешивать форму с вводом. При удалении атрибута формы он работает как обычно.

большое спасибо, ребята.

0 голосов
/ 12 июля 2020

он не работает с window.open(), потому что, если вы читаете консоль, в нем говорится: «есть заблокированное открытие 'stacksnippets.net/user/vfd' в новом окне, потому что запрос был сделан в изолированной кадр, для которого не установлено разрешение 'allow-popups'. window.open () отлично работает, если его нет в фрагменте стека. ". Потому что вы использовали StackSnippets или аналогичный фрейм для перенаправления. Если вы хотите использовать его ...

Используйте ...

window.location.replace()

Вместо ...

window.open()

function searchUser() {
    window.location.replace("/user/" + document.getElementById('inputName').value);
}
<form class="form-inline my-2 my-lg-0">
    <input id="inputName" class="form-control mr-sm-2" id="base_layout_user_search" type="search"
           placeholder="Search">
    <button id="searchBtn" class="btn btn-outline-success my-2 my-sm-0" onclick="searchUser()" type="button">
        Search
    </button>
</form>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...