1

私はstruts2-jquery plugin自分のアプリケーションで使用しています。そのsj:aコンポーネントを使用してフォームを送信しています。フォームを送信する前に確認ダイアログを表示する必要があるという要件が発生するまで、すべてが正常に機能します。jquery.alert plugin確認ダイアログの表示に使用しています。問題は、このjconfirmダイアログがブロックされていないことです。jconfirmメッセージは表示されますが、イベントは引き続き実行されます。beforesubmitユーザーが確認ダイアログをクリックするまでイベントの実行を停止する方法についてのアイデアはありますか?

次のコードを使用しています

    var result = false;
    if(flag == 'true') {
        jConfirm("Message", "Note", function(choice) {
            if(choice) {
                submitFlag = true;
                $.publish('beforeSaveMilestoneSubmit');
            } 
        });

    } else {
        submitFlag = true;
        $.publish('beforeSaveMilestoneSubmit');
    }
4

1 に答える 1

1

この問題の解決策をここで見つけました。このソリューションは少しハックですが、私にとっては非常にうまく機能しました。解決策は次のとおりです。

<sj:a formIds="form1"  
      id="delete_link"
      targets="itemlist" 
      onBeforeTopics="before" 
      href="yourhref">Delete Item</sj:a>

<!--Duplicate the anchor, but hide it and set listenTopcs-->  

<sj:a formIds="form1"  
     id="delete_link_hidden"
     targets="itemlist" 
     listenTopics="confirmed" 
     href="yourhref" 
     style="display:none;">Delete Item</sj:a>

Javaスクリプトはこちら:

$.subscribe('before',function(event,data){  
event.originalEvent.options.submit=false;  
if(jConfirm("Message", "Note", function(choice))  
    $.publish('confirmed');  
});
于 2012-08-10T21:08:25.343 に答える