JAC
JAC

Reputation: 1117

if confirm ignores location.href

The following code reloads the page rather than the desired URL

    function delFile(name,id) {
    if (confirm('Are you sure you want to DELETE '+name+'?')) {
        location.href='/cgi-bin/cnc.cgi?phrsrg~038919718485478~'+id ;
        alert('/cgi-bin/cnc.cgi?phrsrg~038919718485478~'+id);
    }
    else {
        return false;
    }
}

In the alert, the id is shown as being added properly and the URL is correct. I can copy it from the alert, then use that text to get the right result. Other scripts on the same page that use similar location.href are working perfectly but this is the only one using confirm.

I've also tried

window.location.href = "http://stackoverflow.com";

But the page still reloads.

The triggering link is:

onClick="return delFile('Bill','1234')

Upvotes: 1

Views: 107

Answers (3)

Daniel Beck
Daniel Beck

Reputation: 21475

The href on the triggering link is still being linked to, because delFile() only returns false if the confirm is not accepted -- that's what's causing the page reload. When the function returns true, the link fires before the redirect occurs.

You want the function to return false in all cases, so don't put the return in an else clause.

function delFile(name, id) {
  if (confirm('Are you sure you want to DELETE ' + name + '?')) {
    location.href = '/cgi-bin/cnc.cgi?phrsrg~038919718485478~' + id;
    alert('/cgi-bin/cnc.cgi?phrsrg~038919718485478~' + id);
  }
  return false; // always, since you always want to prevent the link's default behavior.  (Could also use event.preventDefault here.)
}
<a href="/" onClick="return delFile('Bill','1234')">test</a>

Upvotes: 2

Neil Girardi
Neil Girardi

Reputation: 4923

It looks like the delFile() function is missing the opening curly brace, so I would start by fixing that. If the issue persists, check the JS console. Also, posting a codepen would be helpful.

Upvotes: 0

Lekens
Lekens

Reputation: 1969

    function delFile(name,id){
    if (confirm('Are you sure you want to DELETE '+name+'?')) {
   /* var fullpath = better to use the full url name/link;*/
    var url = '/cgi-bin/cnc.cgi?phrsrg~038919718485478~'+id;
    window.open(url, '_parent');
        alert('/cgi-bin/cnc.cgi?phrsrg~038919718485478~'+id);
    }
    else {
        return false;
    }
    }

Upvotes: 0

Related Questions