javascript重定向不起作用
我有一个表单,它接受用户的输入并将窗口重定向到URL,并将用户的输入附加到末尾 这是我的HTMLjavascript重定向不起作用,javascript,forms,Javascript,Forms,我有一个表单,它接受用户的输入并将窗口重定向到URL,并将用户的输入附加到末尾 这是我的HTML <form id="wikiForm"> <label id="sideBarLabel">VoIP Services <input type="text" placeholder="Search Wiki: e.g. E911" name="queryString" id="query-strin
<form id="wikiForm">
<label id="sideBarLabel">VoIP Services
<input type="text" placeholder="Search Wiki: e.g. E911" name="queryString" id="query-string" />
</label>
<input type="submit" value="Search" onclick="searchWiki();" />
</form>
问题是它没有重定向。它仅将“siteQuery”变量附加到当前URL的末尾。我知道它在调用javascript,因为我看到了这两个警报。我不确定我做错了什么 你就不能用assign吗
window.location.assign("http://wiki.voipinnovations.com/dosearchsite.action?queryString=" + siteQuery);
签出:使用默认的操作
和方法
属性
HTMLForm元素提供了一种机制来完成这项工作
<form id="wikiForm" action="http://wiki.voipinnovations.com/dosearchsite.action" method="GET">
<label id="sideBarLabel">VoIP Services
<input type="text" placeholder="Search Wiki: e.g. E911" name="queryString" id="query-string" />
</label>
<input type="submit" value="Search" />
</form>
致:
这是因为location.href
是只读属性,而location.assign()
是设置要加载的新位置的正确方法。您也可以直接将字符串指定给位置
对象:
每当为location对象指定新值时,文档
将使用URL加载,就像调用了location.assign()一样
使用修改后的URL
来源:问题是由于您实际提交了表单,并且在表单提交第一次时重定向丢失。有两种简单的方法可以解决此问题:
提交
更改为按钮
,或onclick=“return searchWiki();”
(2)原因在于您使用了
type=“submit”
,它提交并向默认的操作
参数(当前页面)发送一个GET头
将type=“submit”
更改为type=“button”
VoIP服务
函数searchWiki(){
警告(“表格工作!”);
var siteQuery=$('#查询字符串').val();
警报(siteQuery);
window.location.assign(“http://wiki.voipinnovations.com/dosearchsite.action?queryString=“+siteQuery);
警报(“第二条消息”);
}
我用type=“submit”
尝试了该代码,它发出了警报,但没有重定向,因为提交在窗口之前被优先排序。位置发生了变化,这就是它只是在当前url中附加一个?queryString=value
的原因。
如果您像上面代码中所示那样更改类型,它工作得很好。更改输入类型=提交到类型=按钮
VoIP服务
试过了。有相同的结果。控制台中是否有任何错误-看不出为什么不起作用这很好,但是你能告诉我为什么当你按下回车按钮时它不起作用吗?你的和我的一样。。。刷新页面。当我点击“搜索”时,它工作,但当我点击“回车”时,它不工作。所以你想点击“回车”键来触发重定向,还是不想?当一个表单只有一个文本输入时,按enter键时的默认行为是提交表单。没错,但奇怪的是,它没有为我这样做。我想按enter键触发重定向。但重定向只在我单击submit按钮时起作用。我不明白为什么会这样。因为无论哪种方式,为了运行JavaScript,您实际上都绕过了表单的提交事件。您可以将事件处理程序附加到输入框,以便在按键时检查是否按下了enter键,如果是,则运行相同的重定向代码。这很好。但您能解释一下,当您使用此表单在键盘上按enter键时,为什么我的表单未提交?它只在您实际单击按钮时起作用。当您按enter键时,它会将“queryString”附加到当前URL并刷新页面。因为您使用的是onclick
-事件处理程序。您可以删除
,并在整个过程中使用javascript,因为您不是在为自己使用GET/POST,而是在为重定向url使用GET/POST。这将阻止它提交。然后,您可以在窗口
或按钮上执行按键
-事件并使用它。例子:
<form id="wikiForm" action="http://wiki.voipinnovations.com/dosearchsite.action" method="GET">
<label id="sideBarLabel">VoIP Services
<input type="text" placeholder="Search Wiki: e.g. E911" name="queryString" id="query-string" />
</label>
<input type="submit" value="Search" />
</form>
window.location.href = "…";
window.location.assign("…"); // or
window.location = "…"
<form id="wikiForm">
<label id="sideBarLabel">VoIP Services
<input type="text" placeholder="Search Wiki: e.g. E911" name="queryString" id="query-string" />
</label>
<input type="button" value="Search" onclick="searchWiki();" />
</form>
<script type="text/javascript" src="https://code.jquery.com/jquery-2.1.4.min.js"></script>
<script>
function searchWiki() {
alert("Form Works!");
var siteQuery = $('#query-string').val();
alert(siteQuery);
window.location.assign("http://wiki.voipinnovations.com/dosearchsite.action?queryString=" + siteQuery);
alert("SECOND MESSAGE");
}
</script>
<form id="wikiForm">
<label id="sideBarLabel">VoIP Services
<input type="text" placeholder="Search Wiki: e.g. E911" name="queryString" id="query-string" />
</label>
<input type="button" value="Search" onclick="searchWiki();" />
</form>