我有这个文本字段和按钮
<input name="txtSearch" type="text" id="txtSearch" class="field" />
<input type="submit" name="btnSearch" value="" id="btnSearch" class="btn" onclick="javascript:SubmitFrm()" />
当用户点击提交按钮时,此功能假设运行
<script type="text/javascript">
function SubmitFrm(){
var Searchtxt = document.getElementById("txtSearch").value();
window.location = "http://www.example.com/search/?Query=" + Searchtxt;
}
</script>
但没有任何反应,我期望发生的是当用户点击提交按钮时,从搜索文本框中取值并将用户重定向到网址+搜索文本框的值......
我做错了什么?
答案 0 :(得分:24)
您的代码中存在以下几个问题:
您正在处理提交按钮的click
事件,其默认行为是将请求发布到服务器并重新加载页面。您必须通过从处理程序返回false
来禁止此行为:
onclick="SubmitFrm(); return false;"
value
无法调用,因为它是属性,而不是方法:
var Searchtxt = document.getElementById("txtSearch").value;
您在查询字符串中发送的搜索查询必须为encoded:
window.location = "http://www.mysite.com/search/?Query="
+ encodeURIComponent(Searchtxt);
答案 1 :(得分:4)
从
更改onclickonclick="javascript:SubmitFrm()"
到
onclick="SubmitFrm()"
答案 2 :(得分:2)
只做
onclick="SubmitFrm"
只有链接网址才需要javascript:
前缀。
答案 3 :(得分:1)
这样做解决了我的问题
<script type="text/javascript">
function SubmitFrm(){
var Searchtxt = document.getElementById("txtSearch").value;
window.location = "http://www.mysite.com/search/?Query=" + Searchtxt;
}
</script>
我将.value();
更改为.value;
,取出()
我没有在文字字段中更改任何内容或提交按钮
<input name="txtSearch" type="text" id="txtSearch" class="field" />
<input type="submit" name="btnSearch" value="" id="btnSearch" class="btn" onclick="javascript:SubmitFrm()" />
像魅力一样。
答案 4 :(得分:0)
从您的代码中删除“javascript:”,它应该有效。
你碰巧使用FireFox吗?我从其他人那里了解到FireFox不再接受'javascript:'字符串。但是,对于我的生活,我找不到原始的来源(虽然我相信它是在FF更新说明中的某处)。