2012-10-09 100 views
5

我有這樣的文本字段,這裏按鈕的JavaScript的onclick重定向

<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 +搜索文本框的值...

我在做什麼錯了?

回答

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

變化從

onclick="javascript:SubmitFrm()" 

的onclick到

onclick="SubmitFrm()" 
2

只是做

onclick="SubmitFrm" 

javascript:前綴只需要鏈接的URL。

0

從代碼中刪除'javascript:',它應該可以工作。

你碰巧使用過FireFox嗎?我從其他人那裏瞭解到,FireFox不再接受'javascript:'字符串。然而,在我的生活中,我找不到原始來源(儘管我相信它是FF更新筆記中的某個地方)。

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