0

这对你们所有人来说都是一个奇怪的问题 - 我相信这个问题与返回 false 或初始 void 有关。我有一个按钮....

<a href="javascript:void(0)" id="csv1" onclick="formexport(vars etc)">Click me<a>

然后在函数内部我对一个php页面进行ajax调用,该页面根据传递给它的变量生成一个Excel文件,然后在完成时删除onclick属性并将href属性替换为指向新创建文件的链接,然后单击再次按下按钮。例如...

function formexport(what, formname, tabid, start, finish, folder){
    $filename = ("/clients/" + folder + "/" + $formname + "-" + finish + ".csv");
    $.ajax({
        url: "formexport.php?rand=" + new Date().valueOf(),
        type: "POST",
        data: { start: start, finish: finish, tab: tabid, form: formname, filename: $filename }
    }).done(function(data){
            $('#' + what).attr('href', data).removeAttr('onclick');
            setTimeout(function() { $('#' + what).click(); }, 20);
    });
    return false;
}

“什么”只是按钮的 id,以便它可以再次成为目标。除了第二个按钮点击之外,这一切都有效。如果我将鼠标悬停在按钮上,则 href 确实已更改为文件链接,但它从未第二次自动单击。是初始函数的返回 false 还是 javascript:void(0),我不确定?非常感谢任何帮助。我在 Stack 的其他地方读到了人们正在将文件加载到框架中以及各种使文件链接工作的东西,但这让我觉得更合乎逻辑和更清晰。

4

1 回答 1

0

另一个 StackOverflow 问题jquery click 在 hyperlink 上不起作用,给出了“为什么这不起作用”的简单答案:

需要注意的重要一点是,它不会重复单击链接。它只触发相关事件。

您的查询可能有一个非常简单的解决方案,除非您的问题没有提及重要的事情。只是改变:

  $('#' + what).attr('href', data).removeAttr('onclick');
  setTimeout(function() { $('#' + what).click(); }, 20);

至:

  window.location.href = data;
于 2013-09-05T22:19:49.703 回答