【问题标题】:JavaScript runs in firefox, but not IE or Chrome?JavaScript 可以在 Firefox 中运行,但不能在 IE 或 Chrome 中运行?
【发布时间】:2012-03-17 19:56:57
【问题描述】:

我的网站中有以下 JavaScript:

 $(function() {
    var $cells = $("td");

    $("#search").keyup(function() {
        var val = $.trim(this.value).toUpperCase();
        if (val === "")
            $cells.parent().show();
        else {
            $cells.parent().hide();
            $cells.filter(function() {
                return -1 != $(this).text().toUpperCase().indexOf(val);
            }).parent().show();
        }
    });
});​

Link to it in action.

这个例子适用于所有浏览器,所以我认为问题出在我的 HTML 某处。这是相关部分:

  <div id="searchContainer">
                <input id="search" type="text">
            </div>
                <table>
                <tr>
                    <th>Username</th>
                    <th>Full name</th> 
                    <th>Tick to select</th>
               </tr>
           @foreach (var user in result) {
            <tr><td>@user.Username</td> <td>@user.FirstName @user.SecondName</td>
                <td><input type="checkbox" name="userId" value="@user.UserId" /></td></tr>
                }

我想的错误一定是在这里,因为代码在 Firefox 中完美运行,但在 Chrome 或 IE 中根本无法运行。

【问题讨论】:

  • 这其中哪一部分不起作用?在框中键入会过滤 chrome 17 中的列表。
  • 在 Chrome 的框中输入内容不会使用我的 HTML 过滤,使用相同的 JavaScript 函数。
  • 查看 Chrome 开发者工具窗口。控制台有错误吗?
  • @Nik 刚刚使用 Firebug for Chrome 看了一下,据我所知,它没有发现任何错误。但是击键也没有发生任何事情!
  • 您的模板引擎是基于 javascript 还是基于服务器端?如果它的 js 并且您在呈现 html 之前触发您的侦听器,它不会拾取所有 TD 列。

标签: javascript html forms javascript-events


【解决方案1】:

可能是因为您缺少输入搜索框上的结束 /...

<input id="search" type="text">

应该是

<input id="search" type="text" />

如果没有,请尝试发布生成的源代码,以确保客户端实际看到的是什么,而不是 asp.net 看到的是什么(我假设您正在使用带有 razor 的 Asp.net mvc?)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-17
    • 1970-01-01
    • 2016-10-23
    • 2012-05-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多