【问题标题】:jQuery not firing in IE10jQuery 没有在 IE10 中触发
【发布时间】:2013-11-07 16:04:20
【问题描述】:
$(document).ready(function () {
    $('#ctl00_ContentPlaceHolder1_btnDisplayReport').click(function () {
        if ((new Date($('#ctl00_ContentPlaceHolder1_txtStartDateFrom').val()) > new Date($('#ctl00_ContentPlaceHolder1_txtStartDateTo').val())) && $('#ctl00_ContentPlaceHolder1_txtStartDateTo').val() != "") {
            alert("Start date cannot be greater than end date.");
            return false;
        }

        if (new Date(($('#ctl00_ContentPlaceHolder1_txtCompletionDateFrom').val()) > new Date($('#ctl00_ContentPlaceHolder1_txtCompletionDateTo').val())) && $('#ctl00_ContentPlaceHolder1_txtCompletionDateTo').val() != "") {
            alert("Completion start date cannot be greater than completion end date.");
            return false;
        }
    });

    $('.dateverification>input').each(function () {
        $(this).change(function () {
            temp = $(this).attr("id");
            temp = temp.replace("txt", "lbl");
            if ($(this).val()) {
                $('#' + temp).show();
            }
        });

        $('.xlink').click(function () {
            temp1 = $(this).attr("id");
            temp1 = temp1.replace("lbl", "txt");
            $('#' + temp1).val("");
            temp1 = temp1.replace("txt", "lbl");
            $('#' + temp1).hide();
        });
    });
});

这是一个 jQuery 函数,它在 FF 和 Chrome 中完美运行,但在 IE10 中没有触发,并且不工作的部分从 $('.dateverification>input').each(function()... 开始我没有使用开发工具或我应该的东西捕获任何 javascript 错误意识到。基本上,我遗漏了一些东西,我无法让它适用于所有浏览器。 (在我的代码文件中也做了一个无缓存请求)

<tr>
    <td style="width: 25%;">
        <%= this.GetGlobalResourceObject("CourseCompletionReport.aspx", "Reports.CourseCompletionReport.StartDateFrom") %>
    </td>
    <td class="dateverification" style="width: 75%;">
        <asp:TextBox ID="txtStartDateFrom" runat="server" SkinID="TextBoxNoneMandatory" autocomplete="off" contentEditable="false"></asp:TextBox>
        <ajaxToolkit:CalendarExtender ID="defaultCalendarExtender1" Format="MMMM dd, yyyy" runat="server" TargetControlID="txtStartDateFrom" />
        <asp:Label ID="lblStartDateFrom" runat="server" Text="x" class="xlink" ></asp:Label>
    </td>
</tr>

这是部分之一 - 文本框 + ajax 日历 + 标签,如果 html 的结构也有问题。所以如果你们中的任何人知道我应该怎么做来调试这个,请回应。提前致谢。

【问题讨论】:

  • 附带说明,永远不要写 $('#ctl00_ContentPlaceHolder1_btnDisplayReport').click(function () {.. 而是使用它的 CssClass 或 ClientID 作为选择器。它只是不可靠而且真的没有那么好。
  • 我会记住这一点,感谢您的建议。
  • 表示我对英语的理解程度很低。我的意思是没有缓存,已经编辑过了。感谢您注意到这一点。 Response.Cache.SetCacheability(System.Web.HttpCacheability.NoCache);
  • LOL 好吧,我应该猜到了:),不管怎样,你已经编辑了这个,我们可以删除这些关于“现金”的 cmets。

标签: javascript jquery internet-explorer-10


【解决方案1】:

我认为 IE 10 中的任何问题都会转移到 IE 11 中。我正在运行 IE 11,根据您提供的脚本和结构,它似乎对我有用。

这是我用过的小提琴。我尝试复制您显示的内容,将 span 元素替换为您的 label,因为这将被渲染并删除 CalendarExtender,我认为无论如何这都不重要。

http://jsfiddle.net/Sn7p8/9/

您确定您的选择器正在获取您期望的元素吗?

附带说明,这里是存储jquery 对象的一种常见做法的示例

var Members = 
{
  btnDisplayReport: $('#' + <%= btnDisplayReport.ClientID %>),
  txtStartDateFrom: $('#' + <%= txtStartDateFrom.ClientID %>),
  txtStartDateTo: $('#' + <%= txtStartDateTo.ClientID %>),
  txtCompletionDateFrom: $('#' + <%= txtCompletionDateFrom.ClientID %>)
}

然后,您可以使用 Members 对象来访问元素

$(document).ready(function(){
  Members.btnDisplayReport.click(function(){
    ...
  });
});

【讨论】:

    猜你喜欢
    • 2016-11-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-14
    • 2013-09-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多