JSF <h:commandLink> 작업이 수행되기 전에 Javascript를 어떻게 실행할 수 있나요?[복제하다]

StackOverflow https://stackoverflow.com/questions/73628

  •  09-06-2019
  •  | 
  •  

문제

이 질문에는 이미 답변이 있습니다.

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에 이 코드를 사용하세요.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top