11

JSF <h:commandLink>( onclickan のイベントを使用<a>して現在のフォームを送信する) がある場合、アクションが実行される前にどのように JavaScript を実行しますか (削除の確認を求めるなど)。

4

8 に答える 8

14

このように簡略化できます

onclick="return confirm('Are you sure?');"
于 2010-12-27T22:13:12.750 に答える
7
<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()の呼び出しを別の関数への呼び出しに置き換えることで実行できます。

于 2008-09-16T15:33:53.850 に答える
7

これは私のために働いた:

<h:commandButton title="#{bundle.NewPatient}" action="#{identifController.prepareCreate}"  
                                             id="newibutton" 
                                             onclick="if(confirm('#{bundle.NewPatient}?'))return true; else return false;" 
                                             value="#{bundle.NewPatient}"/>
于 2011-05-24T16:07:32.517 に答える
1

onclick は引き続き使用できます。JSFレンダー キットの仕様(Encode Behavior を参照) は、リンクがそれを処理する方法を説明しています。重要な部分は次のとおりです(onclickでレンダリングされるもの):

var a=function(){/*your onclick*/}; var b=function(){/*JSF onclick*/}; return (a()==false) ? false : b();

したがって、関数にイベント オブジェクトが渡されることはありません (これは信頼できるクロス ブラウザーではありません) が、true/false を返すと送信が短絡されます。

于 2008-09-16T15:48:35.950 に答える
0

JSF 1.2では、onclickイベントを指定できます。

また、 MyFacesIceFacesなどの他のライブラリは、「onclick」ハンドラーを実装しています。

次に行う必要があるのは、単純です。

<h:commandLink action="#{bean.action}" onclick="if(confirm('Are you sure?')) return false;" />

注:これは、onClickイベントの残りのJavaScriptの発生をブロックするため、実行することはできません。return confirm(...)これにより、ユーザーが何を返しても、アクションの発生が効果的に停止されます。

于 2008-09-17T11:20:12.437 に答える
0

フォームが投稿される前に確認のために何かを実行したい場合は、フォーム イベント onSubmit を試してください。何かのようなもの:

myform.onsubmit = function(){confirm("really really sure?")};
于 2008-09-17T13:08:58.290 に答える
0

これは私にとってはうまくいきませんでした。

 onclick="if(confirm('Are you sure?')) return false;" />

しかし、これはした

onclick="if(confirm(\"Are you sure?\"))return true; else return false;"
于 2009-02-04T09:37:44.250 に答える
0
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に使用してください。

于 2011-01-07T04:02:32.717 に答える