Функция jquery не определена для IE9 - PullRequest
0 голосов
/ 26 сентября 2011

Iam new @ jquery - Это работает почти для всех версий IE, кроме IE9, там написано: «Ошибка:« f »не определено».и если не рекомендуется давать имя функции таким образом, то что мне делать?

$(document).ready(function f(txtName) 

    {
    $("#ctl00_Content_chkBox" + txtName).click(function () 
       {
         var thisCheck = $(this);
         if  (thisCheck.is(':checked')) 
           {
             var myDate = new Date();
             var displayDate = 
                 (myDate.getMonth() + 1) + '/' + (myDate.getDate()) + '/' + myDate.getFullYear();
             $(this).next(".textbox1").val(displayDate);
           }
       });
    });

<input type="checkbox" ID="chkBoxName" runat="server"   onclick="f('Name');" />

<asp:TextBox CssClass="textbox1" PreValue="" runat="Server" ID="txt_comp_name_date_v" Required="false" Enabled="False"  />

Ответы [ 2 ]

3 голосов
/ 26 сентября 2011

Вы передаете выражение именованной функции в $(document).ready.В предыдущих версиях Internet Explorer была ошибка, которая выставляла функцию в окружающую область.Похоже, что Internet Explorer 9 исправил эту ошибку, на которую вы полагались.Используйте объявление функции вместо выражения именованной функции, не передавая его $(document).ready:

function f(txtName) {
    $("#ctl00_Content_chkBox" + txtName).click(function () {
        var thisCheck = $(this);
        if (thisCheck.is(':checked')) {
            var myDate = new Date();
            var displayDate = (myDate.getMonth() + 1) + '/' + (myDate.getDate()) + '/' + myDate.getFullYear();
            $(this).next(".textbox1").val(displayDate);
        }
    });
}
2 голосов
/ 26 сентября 2011

Вы используете $(document).ready() только с кодом, который хотите запустить во время инициализации.Вы не используете его для именованных функций, которые хотите запустить позже.Похоже, вы пытались сделать некоторые из них с одним и тем же кодом.

Я бы предложил изменить ваш код следующим образом.Я удалил имя функции и удалил onclick=f() из вашего HTML, который ссылался на него, поскольку он вам тоже не нужен.Теперь в $(document).ready() запущен обработчик кликов, который подключает для вас функцию обработчика кликов (больше не нужно onclick="f()").Затем код для обработчика щелчка выполняет остальную часть вашей работы.

$(document).ready(function() {
   $("#chkBoxName").click(function () {
     var thisCheck = $(this);
     if  (thisCheck.is(':checked')) {
       var myDate = new Date();
       var displayDate = (myDate.getMonth() + 1) + '/' + (myDate.getDate()) + '/' + myDate.getFullYear();
       thisCheck.next(".textbox1").val(displayDate);
     }
   });
});

<input type="checkbox" ID="chkBoxName" runat="server" />

<asp:TextBox CssClass="textbox1" PreValue="" runat="Server" ID="txt_comp_name_date_v" Required="false" Enabled="False"  />

Вы можете увидеть, как он работает здесь: http://jsfiddle.net/jfriend00/9y7sC/.

Вы должны быть очень осторожны с этой частьюкод thisCheck.next(".textbox1"), потому что это очень требовательно при поиске текстового поля.Если вы поместите какой-либо промежуточный HTML-тег между ними, он не будет работать - это должен быть следующий HTML-тег и у него должен быть правильный класс.

Если у вас много флажков рядомв текстовые поля, и вы хотите, чтобы все они получили эту функцию, затем просто дайте им всем одно и то же имя класса и обратитесь к этому классу в коде jQuery следующим образом:

$(document).ready(function() {
   $(".dateCheckbox").click(function () {
     var thisCheck = $(this);
     if  (thisCheck.is(':checked')) {
       var myDate = new Date();
       var displayDate = (myDate.getMonth() + 1) + '/' + (myDate.getDate()) + '/' + myDate.getFullYear();
       thisCheck.next(".textbox1").val(displayDate);
     }
   });
});

<input type="checkbox" class="dateCheckbox" runat="server" />

<asp:TextBox CssClass="textbox1" PreValue="" runat="Server" ID="txt_comp_name_date_v" Required="false" Enabled="False"  />

Вот пример работы нескольких флажковот одного куска кода: http://jsfiddle.net/jfriend00/twu5n/

...