【发布时间】:2018-08-30 01:50:01
【问题描述】:
我在使用 bootstrap 4.1 的导航栏时遇到了很多问题——特别是搜索表单。我一直在使用this documentation link 来提供帮助。我有一个看起来非常标准的引导搜索表单:
我想允许用户输入一些文本,当他们单击搜索按钮时,我希望他们根据输入的文本重定向到一个新链接。这是此表单的 HTML 代码:
<form class="form-inline my-2 my-lg-0">
<input class="form-control mr-sm-2" type="search" placeholder="Enter text" aria-label="Search" id="text-form">
<button class="btn btn-outline-light my-2 my-sm-0" type="submit" id="text-search" onclick="searchClick()">Search</button>
</form>
这是 javascript 文件中的 searchClick() 函数:
var searchClick = function() {
var text = document.getElementById("text-form").value;
// alert(text);
window.location.href = "www.<some-url>" + text;
}
我已经确认我可以从输入框中获取文本(使用注释掉的警报),但无论我尝试什么,它要么不会将我重定向到任何地方,要么会将我重定向回当前页面。我已经根据其他在线搜索尝试了很多不同的代码:我已将按钮更改为 <a>,其 href 字段在单击时会更改(因为我无法在没有文本的情况下预先填充它字段值),我尝试向 searchClick() 函数添加返回,并且尝试将类弄乱并将类型字段更改为“重置”或“输入”或完全删除它。我还没有找到解决方案,所以我想在这里问一下,看看是否有人比我更了解引导程序可以提供一些见解。感谢您的宝贵时间。
【问题讨论】:
-
将
type="submit"更改为type="button",和/或删除form元素。看起来表单在您的 javascript 有机会运行之前提交。 -
或者,将事件处理程序切换为 on submit 并将其附加到
<form>元素。 -
您为什么不直接提交表单? (并首先给输入一个名称,然后为所需位置/脚本提供一个动作)这个函数没有添加任何东西,所以根本不需要javascript。
-
这些尝试的组合都没有奏效——它们都将我重定向到单击时的同一页面(删除
form将输入框一直延伸到左侧)。在将alert(window.location.href)设置为 "www." + text 后立即运行 alert(window.location.href)也会显示当前 url 而不是我想要重定向到的那个,所以这可能是我设置 url 错误的提示(我'也尝试使用window.location(<url>)设置它,但尝试时出错)。编辑:这是第一个评论,而不是以下评论。 -
在表单中添加
action="myscriptName.php",在输入中添加name="search"。删除onClick。然后您的表单将被提交,输入的值将作为名称“search”的 GET 参数发送。
标签: javascript html bootstrap-4