从代码隐藏(C#)调用时,Javascript 函数不起作用

标签 javascript c#

我有这个 JavaScript 函数:

<script type="text/javascript">
        function montaDataSubstituicaoPrestador(dt_exclusao) {

            var arrData = dt_exclusao.split('/');
            var exclusaoFormatada = arrData[1] + '-' + arrData[0] + '-' + arrData[2];
            var dias = parseInt(prazoSubPrestador);
            var novaData = new Date(arrData[2], arrData[1] - 1, arrData[0]);

            novaData.setDate(novaData.getDate() + dias);

            hoje = new Date(novaData)
            dia = hoje.getDate()
            mes = hoje.getMonth()
            ano = hoje.getFullYear()
            if (dia < 10)
                dia = "0" + dia

            if ((mes + 1) < 10)
                mes = "0" + (mes + 1);

            if (ano < 2000)
                ano = "19" + ano

            var dt = dia + "/" + (mes) + "/" + ano;

            document.getElementById('lblPrazoSubsAns').innerHTML 
                                             = "Prazo de substituição: " + dt;
        }
    </script>

我从后面的代码中得到了这个调用:

ClientScriptManager cs = Page.ClientScript;
cs.RegisterClientScriptBlock(this.GetType(), 
         "MontaDataExclusaoPrazoANS", 
         "montaDataSubstituicaoPrestador(" + calDataExclusao.Date + ")", true);

这不起作用。什么都没发生。我必须做什么?

如果我这样做,可以工作,但参数为空:

ScriptManager.RegisterClientScriptBlock(this, this.GetType(),
               "_montaDataSubstituicaoPrestador", 
               "montaDataSubstituicaoPrestador(null);", true);

但是,如果改变不起作用。不接受连接字符:

ScriptManager.RegisterClientScriptBlock(this, this.GetType(),
               "_montaDataSubstituicaoPrestador", 
               "montaDataSubstituicaoPrestador(" + nova_data + ");", true);

这样,我遇到了这个错误:

Uncaught SyntaxError: missing ) after argument list

为什么?

最佳答案

尝试更改您的功能

ClientScriptManager cs = Page.ClientScript;
            cs.RegisterClientScriptBlock(this.GetType(), "MontaDataExclusaoPrazoANS", "montaDataSubstituicaoPrestador(" + calDataExclusao.Date + ")", true)

ClientScriptManager cs = Page.ClientScript;
            cs.RegisterClientScriptBlock(this.GetType(), "MontaDataExclusaoPrazoANS", "montaDataSubstituicaoPrestador('" + calDataExclusao.Date + "')", true)

并且对于

ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "_montaDataSubstituicaoPrestador", "montaDataSubstituicaoPrestador(" + nova_data + ");", true);

ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "_montaDataSubstituicaoPrestador", "montaDataSubstituicaoPrestador('" + nova_data + "');", true);

因为 javascript 不能将直接参数理解为参数,所以在连接时必须用单引号指定它​​。 希望它能发挥作用

关于从代码隐藏(C#)调用时,Javascript 函数不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34138439/

相关文章:

c# - 如何在 C# 中渲染带有颜色键控的绿色蒙版的图像?

c# - 写入 Visual Studio 输出窗口,万无一失的方法

javascript - 如何在递归函数中使用闭包而不丢失 JavaScript 的作用域?

php - 如何使用 jQuery 更新带有多个变量的输入框或标签

javascript - Ext Js Javascript 执行

c# - 具有存储输入绑定(bind)错误的 HTTP 触发函数

c# - silverlight鼠标位置c#

javascript - 如何使谷歌地图中的重叠 POI 可访问

javascript - 获取 Javascript 中某个类内链接的 HREF 值

c# - Unity - 奇怪的错误,构建与构建和运行