Firefox没有将值从输入文本字段传递给javascript函数

时间:2012-03-21 20:41:53

标签: javascript html firefox input

我有一个问题,Firefox将信息传递到javascript函数。以下代码适用于Chrome,Safari和Opera。它在IE9中存在一些问题,但总体上做了它应该做的事情。

但是,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();
        }
    }
}​

2 个答案:

答案 0 :(得分:1)

我认为这是因为浏览器说支持你的脚本实际上是在查找name属性等于query的字段(请注意我对此并不是100%肯定)。据我所知,这在Firefox中从未奏效 只需使用query替换事件处理程序中的document.getElementById('query')即可。在onchange的{​​{1}}处理程序中,您也可以使用input代替this
另外,不要在内联事件处理程序中使用query。它已经过时了。

答案 1 :(得分:0)

term是第三个参数,你在函数调用中传递查询就像一个变量。它没有在任何地方定义。传递字段查询的值