IE флажок jquery click событие кажется случайным? - PullRequest
0 голосов
/ 17 августа 2011

Приведенный ниже код прекрасно работает в Chrome и работает с перебоями в IE7, а вовсе не в IE8 ... Изначально я не отключал / не включал флажки, но так как я заметил, что данные IE не обновляются должным образом, я подумал, что это может быть невозможно не отставать от пользователей, щелкающих слишком быстро, поэтому я пытался отключить все флажки при каждом нажатии, а затем снова включить их после успешного выполнения запроса. Именно тогда стало очевидно, что поведение странное и случайное.

edit Я только что очистил кеш в IE и перезагрузил страницу. Я был в состоянии проверить и снять все флажки один раз успешно. Как только каждое действие было применено к каждой коробке, оно перестало работать. Это проблема с кешированием?

       $('input[type=checkbox]').live('click', function () {
           //disable all checkboxes until it's done saving
           $('input[type=checkbox]').attr('disabled', true);
           if ($('input[id=' + $(this).attr('id') + ']:checked').length) {
               //do checked stuff including ajax call
               $.ajax({
                   url: 'EditService.svc/updatedatachecked',
                   type: 'GET',
                   data: { "code": code },
                   dataType: 'json',
                   success: function () {
                       //reenable all checkboxes
                       $('input[type=checkbox]').removeAttr('disabled');
                   },
                   error: function (a, b, c) {
                       $('.EditStatus').html("Database Error!");
                   }
           } else {
               //do unchecked stuff including ajax call
               $.ajax({
                   url: 'EditService.svc/updatedataUNchecked',
                   type: 'GET',
                   data: { "code": code },
                   dataType: 'json',
                   success: function () {
                       //reenable all checkboxes
                       $('input[type=checkbox]').removeAttr('disabled');
                   },
                   error: function (a, b, c) {
                       $('.EditStatus').html("Database Error!");
                   }
           }
       });

1 Ответ

0 голосов
/ 25 августа 2011

На самом деле это была проблема с кэшированием. Я включил метку времени в каждый вызов ajax, и он начал работать как положено.

$('input[type=checkbox]').live('click', function () {
       //disable all checkboxes until it's done saving
       $('input[type=checkbox]').attr('disabled', true);
       if ($('input[id=' + $(this).attr('id') + ']:checked').length) {
           //do checked stuff including ajax call
           $.ajax({
               url: 'EditService.svc/updatedatachecked',
               type: 'GET',
               data: { "code": code, "timestamp": timestamp },
               dataType: 'json',
               success: function () {
                   //reenable all checkboxes
                   $('input[type=checkbox]').removeAttr('disabled');
               },
               error: function (a, b, c) {
                   $('.EditStatus').html("Database Error!");
               }
       } else {
           //do unchecked stuff including ajax call
           $.ajax({
               url: 'EditService.svc/updatedataUNchecked',
               type: 'GET',
               data: { "code": code, "timestamp": timestamp },
               dataType: 'json',
               success: function () {
                   //reenable all checkboxes
                   $('input[type=checkbox]').removeAttr('disabled');
               },
               error: function (a, b, c) {
                   $('.EditStatus').html("Database Error!");
               }
       }
   });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...