0

나는 내 페이지에 jsf '명령 링크'을 가지고 있습니다. 이 commandLink에는 onClick 이벤트가 있습니다. 현재 나는 onclick 함수를이 commandLinks의 onclick 속성으로 직접 작성했습니다.jsf 구성 요소와 눈에 거슬리는 자바 스크립트 ... 어떻게?

commandLink이므로 html 앵커 태그가 생성되고 양식 제출을 위해 jsf JavaScript가 첨부됩니다. JavaScript를 onclick 속성에 직접 작성하면 jsf가 JavaScript를 삽입하면서 자체 JavaScript를 처리합니다. 그러나 jQuery를 통해 첨부하면 동일한 이벤트 핸들러를 사용할 때 이벤트 핸들러를 실행하기 전에 양식을 인식하고 전송하지 않습니다.

이 문제에 대한 적절한 해결책이 있습니까?

답변

3

jQuery 함수는 JSF가 커버 아래에서 수행하는 것과 동일하게 수행해야합니다. 결과에 따라 양식을 제출하는 표준 JSF 작업을 실행하는 다른 함수에서 onclick 속성에 지정된 사용자 정의 onclick 함수를 래핑합니다. 커스텀 onclick 함수.

모든 링크 요소의 클래스가 link이고 custom onclick 함수가 yourCustomFunction() 인 경우를 가정 해 보겠습니다.

$(".link").each(function(i, element) { 
    var originalJsfOnclick = element.onclick; // Grab the JSF-generated onclick function. 
    element.onclick = null; // Reset it. 

    $(element).click(function(event) { 
     if (yourCustomFunction()) { // First call your function. 
      originalJsfOnclick.call(element, event); // If it returns true, then execute the JSF-generated onclick. 
     } 
    }); 
}); 

function yourCustomFunction() { 
    // ... 
}