Событие onchange SharePoint 2007 не отменяется в ie6 - PullRequest
0 голосов
/ 26 сентября 2011

Я уверен, что это не проблема sharepoint 2007, но id скорее охватывает все мои базы.

Я консультируюсь с крупной компанией, разрабатывающей решение для распределенных сетей для их интранета. Одна из моих задач - переключить обычный выпадающий список в представлении списка sharepoint 2007 с чем-то, что имеет тип вперед и фильтрацию. Поэтому я выбрал комбинированный список jquery.

Теперь во всем, кроме ie6, этот комбинированный список работает, и событие onchange также работает. Мой процесс таков:

function diidFilterLinkTitleNoMenuOnChange()
{
     FilterField("{9232EB4D-2E5D-40D3-A1C0-818CC21AC839}","LinkTitleNoMenu",this._selOption.value, this.selectedIndex);
}

$(document).ready(function(){
window.dhx_globalImgPath='../_layouts/Intranet.Portal.Custom/PeopleChangesFiles/imgs/';
    var y = document.getElementById('diidFilterLinkTitleNoMenu');
    if(y != null)
    {
          $('#diidFilterLinkTitleNoMenu').change(function(){}).attr('onchange',function(){});


          var z = dhtmlXComboFromSelect('diidFilterLinkTitleNoMenu');
          z.enableFilteringMode(true);
          z.attachEvent("onchange",diidFilterLinkTitleNoMenuOnChange);
          y.parentNode.removeChild(y);       

    }        

    })

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

Насколько я могу судить в ie6, происходит то, что старое событие onchange все еще там, все еще прикреплено и запускается первым, поскольку оно нарушает код, и мое событие не запускается.

Есть ли особый способ удаления событий в ie6? Или я делаю это неправильно?

1 Ответ

1 голос
/ 29 сентября 2011

Это потому, что метод change () является ярлыком для .bind('change', handler).И .bind присоединяет обработчик событий, а не удаляет или переопределяет.

Цитата из bind () page:

Когда событие достигает элемента, все обработчики связываются сэтот тип события для элемента запускается.Если зарегистрировано несколько обработчиков, они всегда будут выполняться в том порядке, в котором они были связаны.

Используйте unbind для удаления обработчиков событий: $('#diidFilterLinkTitleNoMenu').unbind('change');

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...