Richfaces 3.3.3のプロトタイプのバージョンに問題があります。プロトタイプjsを使用したカスタムトリガイベントが現在の貼り付け値を見つけられない
Richfacesをアップグレードする前に、以下にリストされているコードはうまくいきました。
Event.observe('#{formName}:suggest', 'paste', this.handleMousePaste.bind(this));
// Trigger keyup event when user copy and pastes data into field. (Using mouse to paste will not work without this fix)
function handleMousePaste(event) {
// Get element object event occured on
var element = Event.element(event);
// Trigger a keyup event which will send ajax request to server (Event already attached in Richfaces code)
triggerEvent(element,'keyup');
}
// Create custom function that will allow us trigger an event anywhere in our javascript code
function triggerEvent(element,event){
if (document.createEventObject)
{
// dispatch for IE
var evt = document.createEventObject();
return element.fireEvent('on'+event,evt)
}
else
{
// dispatch for firefox + others
var evt = document.createEvent("HTMLEvents");
evt.initEvent(event, true, true); // event type,bubbling,cancelable
return !element.dispatchEvent(evt);
}
}
何やっている: はhandleMousePasteは()私のページ上のテキスト入力フィールドに添付されてkeyUpイベントを発火される(経由RichFacesのa4j:suppoerタグ)
<h:inputText value="#{myBean.typed}" id="suggest" styleClass="dataTableFilterField">
<a4j:support event="onkeyup" reRender="Table1,tableScroller" ajaxSingle="true" requestDelay="200" ignoreDupResponses="true" eventsQueue="filterQueue"/>
</h:inputText>
何らかの理由で、入力フィールド 'suggest'に貼り付けた値が取得されません。 2回目に貼り付けた場合、貼り付けた最初の値が表示されます。例: 「Tom」に貼り付けると、ajaxリクエストが送信されますが、候補フィールドは空白です。 'Tom2'に貼り付けると、提案された値は 'Tom'(このフィールドには 'TomTom2'が含まれています)というメッセージが表示されます。
私が言ったように、これはRichfacesをアップグレードする前に正常に動作していたので、Prototypeの新しいバージョンは信じています。
すべてのアイデア?