6

我在这里有这个文本字段和按钮

<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>

但是什么也没有发生,我期望发生的是当用户单击提交按钮时,从搜索文本框中获取值并将用户重定向到 url + 搜索文本框的值......

我究竟做错了什么?

4

5 回答 5

26

您的代码中有几个问题:

  • 您正在处理click提交按钮的事件,其默认行为是将请求发布到服务器并重新加载页面。您必须通过从处理程序返回来禁止此行为false

    onclick="SubmitFrm(); return false;"
    
  • value不能被调用,因为它是一个属性,而不是一个方法:

    var Searchtxt = document.getElementById("txtSearch").value;
    
  • 您在查询字符串中发送的搜索查询必须经过编码

    window.location = "http://www.mysite.com/search/?Query="
        + encodeURIComponent(Searchtxt);
    
于 2012-10-09T14:44:37.423 回答
4

将 onclick 从

onclick="javascript:SubmitFrm()"

onclick="SubmitFrm()"
于 2012-10-09T14:40:04.777 回答
2

做就是了

onclick="SubmitFrm"

只有javascript:链接 URL 需要前缀。

于 2012-10-09T14:40:27.883 回答
2

这样做解决了我的问题

<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()" />

奇迹般有效。

于 2012-10-09T15:14:46.237 回答
0

从您的代码中删除“javascript:”,它应该可以工作。

你碰巧使用 FireFox 吗?我从其他人那里了解到 FireFox 不再接受 'javascript:' 字符串。然而,就我的一生而言,我找不到原始来源(尽管我相信它在 FF 更新说明中的某个地方)。

于 2012-10-09T14:44:00.450 回答