我有以下代码在Chrome和IE 10和FF中运行良好但在IE 8中不起作用,并且很可能在IE 9中也可以使用:
<script type = "text/javascript">
$(document).ready(function () {
var $j = jQuery.noConflict();
console.dir($j("#Button1"));
$j("#Button1").click(function () {
var textbox = document.getElementById("TextBox1").value;
if (textbox.length > 0) {
//alert("Search query is not empty and redirecting...");
window.location.href = "http://www.mypagep.com/search_results.aspx?searchtext=" + textbox + "&folderid=0&searchfor=all&orderby=title&orderdirection=ascending";
}
else {
alert("Search query is empty");
document.getElementById("TextBox1").focus();
}
});
$j('#TextBox1').keyup(function () {
var $th = $j(this);
$th.val($th.val().replace(/[^a-zA-Z0-9 ]/g, ''));
});
$j('#TextBox1').keypress(function (e) {
var textbox = document.getElementById("TextBox1").value;
var code = (e.keyCode ? e.keyCode : e.which);
if (code == 13) {
if (textbox.length > 0) {
e.preventDefault();
window.location.href = "http://www.mypage.com/search_results.aspx?searchtext=" + textbox + "&folderid=0&searchfor=all&orderby=title&orderdirection=ascending";
}
else {
e.preventDefault();
alert("Search query is empty");
document.getElementById("TextBox1").focus();
}
}
});
});
</script>
我正在使用以下库链接:
<script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jqueryui/1.10.3/jquery-ui.min.js"></script>
我正在使用似乎与JQuery冲突的CMS,这就是为什么我被迫使用该行:var $j = jQuery.noConflict();
并使用$j
而不是普通$
符号
功能: 如果用户在文本框中输入任何无效字符,则将删除字符。如果用户在文本框中按Enter键并且那里有字符,则用户将被定向到搜索页面,否则它们将显示警告框。 “搜索”按钮也是如此,如果用户按下但文本框中没有文本,则用户将显示警告框,但不会发生任何事情,但如果文本框中有文本,则用户将被定向到搜索页面。
我们被迫使用IE8,因为其他一些软件因此我试图让它在旧版本的IE中工作:/
如何修改代码以使其适用于不是最新的IE浏览器版本?
答案 0 :(得分:2)
您的问题是IE8中不存在console.dir
,即使打开了开发人员工具(关闭开发工具时,&lt; IE9中也不存在console
对象)。将其更改为console.log
,或将其删除。对于IE8代码,您可能希望保留console
个调用,除非您在特定时刻需要它们,因为需要为它打开开发工具。
此外,您应该强烈考虑Spudley关于您拨打jQuery.noConflict()
的电话的评论。这应该高于 $(document).ready
调用,并将其更改为$j(document).ready
,以便您的.ready()
调用使用无冲突的jQuery变量。