JSF <h:commandLink> 작업이 수행되기 전에 Javascript를 어떻게 실행할 수 있나요?[복제하다]
-
09-06-2019 - |
문제
이 질문에는 이미 답변이 있습니다.
- 제출 확인 답변 1개
JSF가 있는 경우 <h:commandLink>
(이것은 onclick
이벤트 <a>
현재 양식을 제출하려면) 작업을 수행하기 전에 JavaScript(예: 삭제 확인 요청)를 어떻게 실행합니까?
해결책 2
<h:commandLink id="myCommandLink" action="#{myPageCode.doDelete}">
<h:outputText value="#{msgs.deleteText}" />
</h:commandLink>
<script type="text/javascript">
if (document.getElementById) {
var commandLink = document.getElementById('<c:out value="${myPageCode.myCommandLinkClientId}" />');
if (commandLink && commandLink.onclick) {
var commandLinkOnclick = commandLink.onclick;
commandLink.onclick = function() {
var result = confirm('Do you really want to <c:out value="${msgs.deleteText}" />?');
if (result) {
return commandLinkOnclick();
}
return false;
}
}
}
</script>
다른 Javascript 작업(예: 양식 입력 유효성 검사 등)은 다음 호출을 대체하여 수행할 수 있습니다. confirm()
다른 함수를 호출하면 됩니다.
다른 팁
이렇게 단순화할 수 있다
onclick="return confirm('Are you sure?');"
이것은 나에게 효과적이었습니다.
<h:commandButton title="#{bundle.NewPatient}" action="#{identifController.prepareCreate}"
id="newibutton"
onclick="if(confirm('#{bundle.NewPatient}?'))return true; else return false;"
value="#{bundle.NewPatient}"/>
onclick을 계속 사용할 수 있습니다.JSF 렌더 키트 사양 (인코드 동작 참조) 링크가 이를 처리하는 방법을 설명합니다.중요한 부분은 다음과 같습니다(onclick에 대해 렌더링되는 내용).
var a=function(){/*your onclick*/}; var b=function(){/*JSF onclick*/}; return (a()==false) ? false : b();
따라서 함수는 이벤트 개체(어차피 크로스 브라우저에서는 신뢰할 수 없음)에 전달되지 않지만 true/false를 반환하면 제출이 단락됩니다.
JSF 1.2에서는 onclick 이벤트를 지정할 수 있습니다.
또한 다음과 같은 다른 라이브러리도 있습니다. 내 얼굴 또는 얼음얼굴 "onclick" 핸들러를 구현합니다.
그러면 당신이 해야 할 일은 간단합니다:
<h:commandLink action="#{bean.action}" onclick="if(confirm('Are you sure?')) return false;" />
메모:넌 그냥 할 수 없어 return confirm(...)
이는 onClick 이벤트의 나머지 JavaScript가 발생하는 것을 차단하므로 사용자가 반환한 내용에 관계없이 작업이 발생하는 것을 효과적으로 중지할 수 있습니다!
예를 들어 확인을 위해 양식이 게시되기 전에 무언가를 실행하려면 onSubmit 양식 이벤트를 사용해 보세요.다음과 같은 것 :
myform.onsubmit = function(){confirm("really really sure?")};
이것은 나에게 결코 효과가 없었습니다.
onclick="if(confirm('Are you sure?')) return false;" />
하지만 이건 그랬어
onclick="if(confirm(\"Are you sure?\"))return true; else return false;"
var deleteClick;
var mess="xxx";
function assignDeleteClick(link) {
if (link.onclick == confirmDelete) {
return;
}
deleteClick = link.onclick;
link.onclick = confirmDelete;
}
function confirmDelete() {
var ans = confirm(mess);
if (ans == true) {
return deleteClick();
} else {
return false;
}
}
jsf 1.1에 이 코드를 사용하세요.