【问题标题】:Javascript not running after postback [duplicate]回发后Javascript未运行[重复]
【发布时间】:2016-01-25 17:59:57
【问题描述】:

在 ASP.Net 中发生回发之前,我有一些 Javascript 可以完美运行,但是当单击按钮发生回发事件时,脚本不再运行。

这是我正在使用的代码

function displayCheckboxInSubject() {
    var CountSelectedCB = [];
    console.log("in displayCheckBoxInSubject with loader");
    $(".subjectCB").on("change loader", function () {
    //$(".subjectCB").change(function () {
        selectedCB = [];
        notSelectedCB = [];
        CountSelectedCB.length = 0;
        $(".subjectCB").each(function () {
            //alert("in here two")
            if ($(this).find("input").is(":checked")) {
                //alert("in here three")
                CountSelectedCB.push($(this).find("input").val());
            }
        });

        $("#txtSubject").val(CountSelectedCB.join(", "));
    }).trigger("loader");

}

$(document).ready(displayCheckboxInSubject);

如果有人能指出如何解决这个问题的正确方向,我将不胜感激。

谢谢

西蒙

【问题讨论】:

  • 我没有使用 ajax 更新面板,所以我看不出这是一个重复的问题。

标签: javascript jquery asp.net


【解决方案1】:

这是因为 document.ready() 在回发后没有执行。

Microsoft 建议使用 PageRequestManager 来设置请求处理程序。但是您也可以从后端初始化您的控件并以这种方式触发它。

我不能相信它,但请看这个答案: answered on SO

更新:你可以使用更新面板吗?那应该可以正常工作。

<script type="text/javascript">
  function pageLoad() {
    $('#TextBox1').unbind();
    $('#TextBox1').datepicker(); 
  }
</script>

<asp:ScriptManager runat="server" />

<asp:UpdatePanel runat="server">
  <ContentTemplate>
    <asp:Button runat="server" ID="Button1" />
    <asp:TextBox runat="server" ID="TextBox1" />
  </ContentTemplate>
</asp:UpdatePanel>

来自Encosia的基本示例

【讨论】:

  • 我需要把这个放在哪里?还是我应该删除它?
  • 这对我不起作用,我也不做异步回发
  • 也许 - 我想要做的是当用户单击 asp.net webform 上的发送以将数据发送到数据库时,如果失败,则页面正在回发并且不保留值。该页面现在保留了这些值,但现在已经停止了 javascript 的工作。那么,如果我使用更新面板,我会在哪里使用它呢?我会将我的复选框列表放在面板中,还是在其他地方使用它?
  • 将 UpdatePanel 放入表单中,并将控件放入其中。见此链接:asp.net/web-forms/overview/older-versions-getting-started/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-04-15
  • 1970-01-01
  • 1970-01-01
  • 2013-03-28
  • 2014-06-28
相关资源
最近更新 更多