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

Firefox not passing values from an input text field to a javascript function

本文关键字:值传 函数 javascript 字段 输入 文本 Firefox      更新时间:2023-09-26

我在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();
        }
    }
}​

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

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