Вопрос

У меня есть веб -фрагмент (файл .js), разработанный для приложения Alfresco. Он обрабатывает кнопку, на которой отображается форма, направленная на выбор участников, которые подписались на пространство навойной, чтобы отправить им почту.
Все флажки генерируются динамически с именами подписчиков.
Вы можете проверить любого участника, который вы хотите, и у вас также есть специальный флажок, который позволяет вам выбрать или отменить выбор всех участников.
Этот конкретный флажок работает должным образом на Chrome и Firefox.
Однако, когда вы проверяете его на Internet Explorer 8, ни один из участников не выбран или отказано, независимо от того, являются ли они именами проверяют или нет.
Вот пример кода генерации форм и функций OnClick, запускаемых при проверке флажести:

   updateMembersList : function TS_updateMembersList(containerId)
   {
       var div = Dom.get(containerId);
       div.innerHTML = "<div class=\"memberDiv\">" +
           "<input type=\"checkbox\" id=\"selectDeselectAllCb\" checked=\"true\" onchange=\"YAHOO.Bubbling.fire('selectDeselectAllChanged')\" class=\"memberCb\"/>" +
           "<label for=\"selectDeselectAllCb\" class=\"memberLabel\">" + 
           this.msg('label.selectDeselectAll') + "</label>" +
           "</div>";

       for (var i=0; i<this.members.length; i++)
       {
           var member = this.members[i];
           var avatar = Alfresco.constants.URL_CONTEXT + "/components/images/no-user-photo-64.png";

           if (member.authority.avatar && member.avatar != "")
           {

               avatar = Alfresco.constants.PROXY_URI + member.authority.avatar + "?c=force";
           }
           div.innerHTML += "<div class=\"memberDiv\">" +

                "<input type=\"checkbox\" id=\"cb_" + member.authority.userName + "\" checked=\"true\" onchange=\"YAHOO.Bubbling.fire('selectDeselectMemberChanged')\" class=\"memberCb\"/>" +
                "<label for=\"cb_" + member.authority.userName + "\" class=\"memberLabel\">" + 
                        member.authority.firstName + " " + member.authority.lastName + "</label>" +
                "</div>";
       }
   },


   selectDeselectAllChanged: function selectDeselectAllChanged(){
       var selectDeselectAllCb = Dom.get('selectDeselectAllCb');
       var checked = selectDeselectAllCb.checked;
       console.log("Select All");
       var cbs = YAHOO.util.Selector.query("input[id^='cb_']");

       for (var i=0, j=cbs.length; i<j; i++)
       {
           var cb = cbs[i];
           cb.checked = checked;
       }
   },

   selectDeselectMemberChanged: function selectDeselectMemberChanged(){
       var selectDeselectAllCb = Dom.get('selectDeselectAllCb');
       var cbs = YAHOO.util.Selector.query("input[id^='cb_']");

       var firstChecked;
       if (cbs[0] != null){
           firstChecked = cbs[0].checked;
       }

       for (var i=0, j=cbs.length; i<j; i++)
       {
           var cb = cbs[i];
           if (cb.checked === firstChecked){
               continue;
           }
           else{
               selectDeselectAllCb.checked = false;
               return;
           }
       }
       selectDeselectAllCb.checked = firstChecked;
   },

Вначале я думал, что запрос не был поддержан IE8, но это не так.
Такой синтаксис поддерживается IE7 и более поздними версиями.

Это было полезно?

Решение 2

Я решил проблему. Я заменил onchange обработчик событий onclick обработчик события. Действительно, у онкола есть случайное поведение в интернет -проводнике, тогда как onclick работает нормально в большинстве случаев. Спасибо за помощь.

Другие советы

Попробуйте удалить console.log("Select All"); и заменить его на alfresco.logger.debug («sellect all»); Т.е. не любит консольный объект.

Кроме того, запустите свой код на JSLINT - если у вас есть неверный JSON, то есть останавливается.

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top