4

私の質問はCancel、確認のボタンをクリックしても、リンクは目的地に移動するということです。cancelユーザーが確認ボックスをクリックした場合に、リンクが宛先に移動しないようにするにはどうすればよいですか?ユーザーがボタンをクリックした場合にのみナビゲートしたいOK

<a id='teachlogout' href='./teacherlogout.php'>Logout</a>
function logoutHandler() {
    if (confirm("You are currently creating an Assessment, are you sure you want to logout?" + "\n" + "(Your current assessment details will be lost)" + "\n")) {
        return true;
    }
}

// logout link
$('#teachlogout').click(function() {
    logoutHandler();
});
4

4 に答える 4

8

する必要があるreturn falseevent.preventDefault()、ユーザーがキャンセルした場合confirm。これを試して:

function logoutHandler() {
    return confirm("You are currently creating an Assessment, are you sure you want to logout?" + "\n" + "(Your current assessment details will be lost)" + "\n");
}

// logout link
$('#teachlogout').click(logoutHandler); 
// ^ Shorter version when you only need to call 1 function with no params

またはこれ:

function logoutHandler(e) {
    if (!confirm("You are currently creating an Assessment, are you sure you want to logout?" + "\n" + "(Your current assessment details will be lost)" + "\n")) {
        e.preventDefault();
    }
}

// logout link
$('#teachlogout').click(function(e) {
    logoutHandler(e);
}); 
于 2013-01-09T09:16:06.490 に答える
3

ナビゲーションを停止するには、falseを返す必要があります。確認から得たものを簡単に返すことができます。

function logoutHandler() {
        return confirm("You are currently creating an Assessment, are you sure you want to logout?" + "\n" + "(Your current assessment details will be lost)" + "\n"))
}

$('#teachlogout').click(function() {
      return logoutHandler();
});

logoutHandlerに確認がある場合は、クリックイベントに入れます。

$('#teachlogout').click(function() {
        return confirm("You are currently creating an Assessment, are you sure you want to logout?" + "\n" + "(Your current assessment details will be lost)" + "\n"))
});

event.preventDefault()を使用して、ナビゲーションを停止することもできます。

$('#teachlogout').click(function(event) {
       if(!confirm("You are currently creating an Assessment, are you sure you want to logout?" + "\n" + "(Your current assessment details will be lost)" + "\n")))
           event.preventDefault();
});
于 2013-01-09T09:15:06.010 に答える
2

ステートメントを次のように変更します。

return confirm("You are currently...");

問題は、ユーザーがダイアログをキャンセルしたときにfalseを返さないことです。

また、ハンドラーで戻り値を操作することはありません。

$('#teachlogout').click(function() {
    return logoutHandler(); // return was missing here
});
于 2013-01-09T09:14:52.970 に答える
1

http://jsfiddle.net/hWe4E/

function logoutHandler() {
            if (confirm("You are currently creating an Assessment, are you sure you want to logout?" + "\n" + "(Your current assessment details will be lost)" + "\n")) {
                return true;
            }

  return false;  //added
}


//you need to return the true/false
$('#teachlogout').click(function() {
      return  logoutHandler();
});
于 2013-01-09T09:21:14.920 に答える