【发布时间】:2016-01-22 18:06:05
【问题描述】:
我想在我的网站上使用一个搜索表单在一个框中输入文本并使用单选按钮选择搜索引擎(站点搜索或我图书馆的目录)。
此代码适用于 Firefox 和 Chrome,但不适用于 IE 和 Safari:
<script type="text/javascript">
function dosearch() {
var sf=document.searchform;
var submitto = sf.sengines.value + escape(sf.searchterms.value);
window.location.href = submitto;
return false;
}
</script>
<form name="searchform" onSubmit="return dosearch();">
<input type="text" name="searchterms" size="20">
<input type="submit" name="SearchSubmit" value="Search">
<br />
<input type="radio" name="sengines" checked value="http://chelmsford.mvlc.org/search/keyword/">Catalog
<input type="radio" name="sengines" value="http://chelmsfordlibrary.org/?s=">Site
</form>
我也有这段代码,它在 IE 中有效,但在 Firefox 中无效:
<script>
function myFunction() {
var engine = document.forms[0];
var txt = "";
var term = escape(document.radiosearch.searchterms.value)
var i;
for (i = 0; i < engine.length; i++) {
if (engine[i].checked) {
txt = txt + engine[i].value;
}
}
window.location.href = txt + term;
}
</script>
<form name="radiosearch" onSubmit="return myFunction();">
<input type="text" name="searchterms" size="20">
<input type="submit" value="Search">
<br />
<input type="radio" name="engine" value="http://chelmsford.mvlc.org/search/keyword/" checked>Catalog</input>
<input type="radio" name="engine" value="http://chelmsfordlibrary.org/?s=">Site</input>
</form>
如何合并或更正这些代码,以便在所有浏览器中都可以使用一段代码?
【问题讨论】:
-
您是否在 IE 或 Safari 的调试控制台中看到任何可以为您提供线索的错误?
-
另外,
escape()已被弃用 - 您可能想改用encodeURIComponent(),或者您可能只是改用window.location.href = encodeURI(text + term)。 -
感谢 jfriend00 - 很遗憾,没有,调试器没有提供任何帮助。在 IE 中发生的情况是“未定义”,然后我输入的任何搜索词都将附加到当前 URL 的末尾,而不是将搜索引擎字符串和搜索词交换为 window.location。我会继续工作 - 感谢您的建议。
标签: javascript html forms