2012-03-21 79 views
0

我有一個firefox將信息傳遞給javascript函數的問題。以下代碼適用於Chrome,Safari和Opera。它在IE9中存在一些問題,但總體上它應該做到這一點。Firefox不會將輸入文本字段的值傳遞給javascript函數

然而,Firefox只是忽略了onchange和onclick控制檯報告「查詢未定義」。如果有解決方法或者我想知道的另一種方法。

<div class="viewstory_controls_content"> 
       Search 
       <input type="text" id="query" onchange="javascript:submitForm('../scripts/php/search.php', 'search_results',query,'main')" name="query"></input> 
       <button class="viewstory_search" onclick="javascript:submitForm('../scripts/php/search.php', 'search_results', query, 'main')"> 
        <div class="viewstory_search_content"> 
         Search 
        </div> 
       </button> 
      </div> 

提交查詢:

function submitForm(url, target, term, type) { 
    // native XMLHttpRequest object 
    term = term.value; 
    url = url + "?term=" + term + "&type=" + type; 
    alert("url:" + url + "\ntarget:" + target + "\nterm:" + term); 
    document.getElementById(target).innerHTML = 'sending...'; 
    if (window.XMLHttpRequest) { 

     req = new XMLHttpRequest(); 
     req.onreadystatechange = function() { 
      jahDone(target); 
     }; 
     req.open("GET", url, true); 
     req.send(null); 
    } 
    else if (window.ActiveXObject) { 
     req = new ActiveXObject("Microsoft.XMLHTTP"); 
     if (req) { 
      req.onreadystatechange = function() { 
       submitFormDone(target); 
      }; 
      req.open("GET", url, true); 
      req.send(); 
     } 
    } 
}​ 
+0

並且這個submitForm()函數看起來像....? – 2012-03-21 20:43:12

+0

如果你的錯誤是'查詢未定義',並且你沒有向我們顯示你初始化'查詢'的位置,我們不能真正幫助很多 – 2012-03-21 20:45:04

+0

對不起應該看到那個需要... – 2012-03-21 20:45:58

回答

1

我想這是因爲瀏覽器說來支持你的腳本實際上尋找一個字段,它的name屬性等於query(請注意,我不是100%當然可以)。據我所知,這從來沒有在Firefox的工作。
只需將事件處理程序中的query替換爲document.getElementById('query')即可。在inputonchange處理程序中,您也可以使用this而不是query
此外,不要在內聯事件處理程序中使用javascript:。已經過時了。

+0

優秀,現在工作。謝謝! – 2012-03-21 21:01:14

+0

不客氣。請記住通過點擊接受按鈕來接受幫助你的答案。 – rhino 2012-03-21 21:06:13

0

term是第三個參數,您在函數調用中像查詢變量一樣傳遞查詢。它沒有在任何地方定義。傳遞現場查詢的值

相關問題