jQuery没有在IE10中触发

时间:2013-11-01 20:58:28

标签: javascript jquery internet-explorer-10

$(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();
        });
    });
});

这是e jQuery功能,它在FF和Chrome中完美运行,但在IE10中没有触发,而且无效的部分从$('.dateverification>input').each(function()...开始我没有用dev工具或其他东西捕获任何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的结构也有问题..所以,如果你们中的任何人都知道我应该怎么做来调试这个,请响应。提前谢谢。

1 个答案:

答案 0 :(得分:0)

我认为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(){
    ...
  });
});