0

私はjavascriptとjqueryダイアログボックスを使用して、Webクライアントがサーバーにデータを照会する前にユーザーが続行したいことを確認しています。

$("#get_stories").click(function(){
    if (userConfirms()){
      getStories()  //call routine to load and process stories
    } else {
      alert("Not getting any stories")
    };
    return false;
});


var userConfirms = function(){
  var $dialog = $("#dialogBox");
  $dialog.html("Are you sure?")
  $dialog.dialog("option", "buttons", 
    [
        {
            text: "Proceed",
            click: function(){
                $dialog.dialog("close");
                return true
            }
        },
        {
            text: "Cancel",
            click: function(){
                $dialog.dialog("close");
                return false
            }
        }
    ]
  );
  $dialog.dialog("open");
};

何が起こっているのかというと、get_storiesクリックイベントがトリガーされ、userConfirms()が呼び出されてtrue / falseがチェックされ、ダイアログが開いてユーザーのフィードバックを取得しますが、ユーザーが[続行]または[キャンセル]をクリックする前に、制御フローが発生しますアラートステートメントまで。元のクリックイベントによってトリガーされた関数を、実行を続行する前にユーザーのフィードバックを待機させるにはどうすればよいですか?

ありがとう!

4

1 に答える 1

0

userConfirms()は常に戻りtrueます。解決策は、コールバックを使用することです。

var userConfirms = function(onSuccess, onCancel) { .....

次に、クリック機能(キャンセルと成功の両方)

click: function() { $.isFunction(onSuccess) && onSuccess() ....

そして、このように電話してください

userConfirms(callbackForSuccess, callbackForCancel)
于 2013-03-21T21:00:31.067 に答える