根据按键修改链接行为

时间:2012-12-21 12:47:49

标签: jquery pdf

我在每个表行中都有一个链接,可以更详细地查看记录。我想添加方法来查看我们为每条记录生成的不同pdf,而不会过多地增加表格。我针对不同的点击条件绑定了不同的事件,但我遇到了一些问题。首先,它不会像通常从硬链接那样转到pdf,而是打开保存对话框。其次,一旦我告诉它不保存,该页面将不会遵循任何pdf链接。我究竟做错了什么?我认为防止默认可能会阻止chrome在看到按键+点击时执行特殊活动,我甚至不确定这是一个问题。奇怪的是,在我(例如ctrl-click之后,页面将不会执行任何操作,但mouseover会将'href'显示为ctrl-click修改后的位置,并在此之后定期点击做我想做的事情。

查看代码,我可以看到为什么它正在做它正在做的事情。防止默认会阻止chrome保存,就像我想要的那样。 href发生了变化,就像我告诉它的那样。现在我必须按照链接。如果我在得到任何回复之前偶然发现了答案,我会回答。

$(".doThings").click(function(e){ 
    var ID = $(this).text();
    if(e.ctrlKey){
        event.preventDefault();
        $(this).attr("href", "http://foo.com/report.php?id="+ID);
    } 
    else if(e.altKey) {
        event.preventDefault();
        $(this).attr("href", "http://foo.com/r30.php?id="+ID); 
    } 
    else if(e.shiftKey) { 
        event.preventDefault();
        $(this).attr("href", "http://foo.com/r45.php?id="+ID); 
    } 
}); 

2 个答案:

答案 0 :(得分:1)

改为使用window.location.href

$(".doThings").click(function(e){ 
    var ID = $(this).text();
    if(e.ctrlKey){
        event.preventDefault();
        window.location.href = "http://foo.com/report.php?id="+ID;
    } 
    else if(e.altKey) {
        event.preventDefault();
        window.location.href = "http://foo.com/r30.php?id="+ID; 
    } 
    else if(e.shiftKey) { 
        event.preventDefault();
        window.location.href = "http://foo.com/r45.php?id="+ID; 
    } 
}); 

答案 1 :(得分:0)

改变href不是要走的路。我只是做了一个javascript重定向。

if(e.ctrlKey){
        e.preventDefault();
        window.location = ("http://foo.com/report.php?id="+ID);
    }