2010-09-23 3 views
1

У меня есть требование, чтобы пользователи могли перемещаться с первого на последний элемент в списке rich: suggestionBox, нажав клавишу, и наоборот, нажав ,Как переопределить методы markPrevious и markNext для rich: suggestionBox javascript

Мне нужно, чтобы получить эту работу на RichFaces 3.3.x

Стремление добиться этого привело меня к JavaScript, который находится за богатых: suggestionBox. Вы можете найти его на JBoss anon svn. Рассматриваемые методы: markPrevious() и markNext().

Это, как они определены на Suggestion.Base.prototype:

markPrevious: function() { 
    if (this.index > 0) this.index--; 
    //else this.index = this.entryCount - 1; 
}, 

markNext: function() { 
    if (this.index < this.entryCount - 1) this.index++; 
    //else this.index = 0; 
}, 

Как вы можете видеть, функциональность, что мне нужно, но по какой-то причине они поместили его в комментарии. Так что я пытался переопределить методы, помещая следующие битый JavaScript в моем файле шаблон, который используется всеми моих страницы:

<script type="text/javascript"> 
    //<![CDATA[ 

    if(Suggestion) { 
     function newMarkPrevious() { 
      if (this.index > 0) this.index--; 
      else this.index = this.entryCount - 1; 
     } 

     function newMarkNext() { 
      if (this.index < this.entryCount - 1) this.index++; 
      else this.index = 0; 
     } 

     Suggestion.Base.prototype.markPrevious = newMarkPrevious; 
     Suggestion.Base.prototype.markNext = newMarkNext; 
     } 
    //]]> 
    </script> 

Теперь, если я проверить Предложения объекта поджигателя, я могу видеть, что методы действительно переопределяются. Тем не менее, все rich: suggestionBoxes на моих страницах по-прежнему используют старую реализацию. Итак, я думаю, что так или иначе, объекты за богатыми: createBoxes создаются до Я переопределяю прототип. И здесь я застрял. Я не знаю, как я мог бы получить свою версию там до любое из этих предложенийBoxes создается.

У кого-нибудь есть идея о том, как это решить?

Thanks,

Kim.

P.S. Я понимаю, что есть возможность просто настроить код непосредственно в richfaces-ui.jar, но я не хочу иметь встроенную банку.

ответ

2

Ответ был найден кем-то более на RichFaces форум сообщества: http://community.jboss.org/message/563271

Вы должны переопределить функции RichFaces.Suggestion.prototype как это:

, если (RichFaces & & RichFaces.Suggestion) { RichFaces.Suggestion.prototype.markPrevious = newMarkPrevious; RichFaces.Suggestion.prototype.markNext = newMarkNext; }

Поскольку RichFaces.Suggetsion.prototype расширяет предлагаемые методы Suggestion.Base.prorotype до того, как вы перефинажируете.

0

Может быть, вы можете разместить a4j: компонент поддержки в том, что богатые: suggestionBox с JavaScript OnKeyUp обработчик событий, который вызывает яваскрипта функцию, похожую на эту:

function KeyCheck(e) { 

    var KeyID = (window.event) ? event.keyCode : e.keyCode; 
    switch(KeyID) { 
    case 1: 
     markNext function 
     break; 
    case 2: 
     markPrevious function 
     break; 
    } 
} 
+0

Я думаю, что это не сработает по двум причинам: 1: Богатые: suggestionBox не обновляет событие onKeyup. 2: Значения markNext() и markPrevious() должны быть вызваны самим объектом, и я не думаю, что могу достичь его из поддержки a4j:. – Mopper

Смежные вопросы