【问题标题】:Click for a button does not get bound correctly on first click, but is correctly bound on the second click单击按钮在第一次单击时未正确绑定,但在第二次单击时正确绑定
【发布时间】:2011-03-16 06:20:04
【问题描述】:

我正在使用 VS2010,MVC3。
我有以下 jQuery 脚本,在单击按钮后,控制器中有一个 ActionResult 将页面的 PDF 版本流式传输到新窗口。

但是,会发生以下情况:
当页面第一次呈现时,我收到警报:“in hereb1”和 actionUrl 的正确 url 值。
第一次单击该按钮时,我收到警报“in hereb2”和“未定义”作为 url 的值,并打开一个新窗口,显示未定义资源的错误。
第三次单击该按钮时,我会收到“in hereb2”的警报和正确的 url 值(与 actionUrl 相同的值),然后会打开一个新窗口并显示预期结果。没有错误。
为什么第一次点击无法获取actionUrl的正确值?

<script type="text/javascript">
 $(document).ready(function () {
     alert("in hereb1");
     var actionUrl = '@MvcHtmlString.Create(Html.BuildUrlFromExpressionForAreas<MyController>(c => c.GeneratePdf(Request.Url.ToString())))';
     alert(actionUrl);
     $("#btnPdf").click(function () {
         var url = $(this).attr("href");
         $(this).attr("href", actionUrl);
         alert("in hereb2");
         alert(url);
         var win = window.open(url, "PdfVersion");
         win.focus();
         return false;
     });
  });
 </script>

谢谢

【问题讨论】:

    标签: jquery jquery-ui asp.net-mvc-3 jquery-events


    【解决方案1】:

    如果您尝试在新选项卡/窗口中打开 actionUrl,以下代码可能会有所帮助

    $("#btnPdf").click(function () {
         //var url = $(this).attr("href");
         $(this).attr("href", actionUrl);
         alert("in hereb2");
         alert(actionUrl);
         var win = window.open(actionUrl, "PdfVersion");
         win.focus();
         return false;
     });
    

    您的代码所做的是获取btnPdf 的网址并在新窗口/选项卡中打开该网址,并将btnPdfhref 属性设置为actionUrl(如果您尝试这样做)这样做确保已经设置了btnPdf 的属性href 的页面已经设置。

    【讨论】:

    • 这不起作用,但还是谢谢。然而,这篇文章的第一个答案奏效了。
    【解决方案2】:

    开关

    var url = $(this).attr("href");
    $(this).attr("href", actionUrl);
    

    $(this).attr("href", actionUrl);
    var url = $(this).attr("href");
    

    【讨论】:

      猜你喜欢
      • 2021-08-08
      • 1970-01-01
      • 2020-04-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-06
      相关资源
      最近更新 更多