我有一个问题,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();
}
}
}
答案 0 :(得分:1)
我认为这是因为浏览器说支持你的脚本实际上是在查找name
属性等于query
的字段(请注意我对此并不是100%肯定)。据我所知,这在Firefox中从未奏效
只需使用query
替换事件处理程序中的document.getElementById('query')
即可。在onchange
的{{1}}处理程序中,您也可以使用input
代替this
。
另外,不要在内联事件处理程序中使用query
。它已经过时了。
答案 1 :(得分:0)
term是第三个参数,你在函数调用中传递查询就像一个变量。它没有在任何地方定义。传递字段查询的值