2014-11-28 6 views
2

У меня есть скрытую ссылку, которая содержит сгенерированный Java-фрагмент, который нужно вызвать:Как вызвать javascript onclick ссылки с AUI?

var AUI = YUI; 
 
AUI().use('event', function(A) { 
 
var deleteButton = 46; 
 
A.one('.searchNameSelect').on('keyup', function(e) { 
 
if(e.button == deleteButton){ 
 
    A.one('a.deleteSelectedSearch')._node.onclick(); 
 
} 
 
}); 
 
});
<script src="http://cdn.alloyui.com/2.0.0/aui/aui-min.js"></script> 
 
<a href="#" onclick="alert('call successful');" class="deleteSelectedSearch" style="display:none;"></a> 
 
<select name="selectedSearch" size="1" class="searchNameSelect"> 
 
<option value="search">search</option> 
 
<option value="another-search" selected="selected">another-search</option> 
 
</select>

Ссылка генерируется с MyFaces (2.1) commandLink <h:commandLink class="deleteSearch" action="#{search.deleteSelected}"></h:commandLink> , который генерирует OnClick javascript: onclick="return myfaces.oam.submitForm('genertated-formId','generated');

Я попытался вызвать событие click с AUI, но безуспешно.

Есть ли у кого-нибудь хорошая идея запускать javascript onclick в стиле AUI-Style?

+0

Вы можете позвонить в 'SubmitForm 'непосредственно в вашем обработчике событий? Я уверен, что вы не можете имитировать клик на href. –

+0

@MattParker В вызове submitForm есть два сгенерированных, потенциально изменяющихся идентификатора. Я бы предпочел использовать сгенерированный код JavaScript для извлечения этих двух генерируемых идентификаторов из DOM. Он работает так, как есть в вопросе, я ищу более AUI-совместимый способ или каким-то образом сделать его более устойчивым к изменениям в YUI , Liferay или JSF ... – flob

ответ

3

Вам нужно использовать модуль 'узел-событийно-симулировать' и называют его

A.one('a.deleteSelectedSearch').simulate('click'); 

Вот измененный код

var AUI = YUI; 
AUI().use('event', 'node-event-simulate', function(A) { 
var deleteButton = 46; 
A.one('.searchNameSelect').on('keyup', function(e) { 
    if(e.button == deleteButton){ 
     A.one('a.deleteSelectedSearch').simulate('click'); 
    } 
}); 
}); 

Working Fiddle