将隐藏表单字段传递给JavaScript函数的正确语法是什么?

时间:2015-12-09 18:18:16

标签: javascript jquery html asp.net xml

以下是我的JavaScript函数的代码:

function PopUpScreen(txt) {
     alert(txt);
 }

以下是用于调用JavaScript函数的代码:

<asp:LinkButton  ID="LinkButton1" runat="server" Font-Size="Medium" CommandName="Select" CommandArgument='<%# Eval("CertID") & "," &  Eval("ReportID") & "," & Eval("PUCOID") %> ' OnClientClick='javascript:PopUpScreen(" + Container.DataItem("ReportToolTipText") + ");' OnCommand="CertLink_Clicked"><%# Container.DataItem("CertID")%></asp:LinkButton>

当我尝试将一个简单的数值传递给PopUpScreen函数时,这段代码工作得很好,打开一个警告窗口,显示我传入函数的数字。但是,当我尝试传入文本值Container.DataItem(“ReportToolTipText”)时,没有任何反应。我花了一天多时间研究这个问题,一次又一次地调整语法,直到我不再收到任何错误消息。我超越了我的绳索。任何人都可以提供给我的帮助对我来说意味着世界。如果您需要任何其他信息,请与我们联系。

2 个答案:

答案 0 :(得分:0)

我刚刚在VB.Net中为你做了,但你必须将它转换为C#。将变量txt字符串更改为Container.DataItem

Protected Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
    Dim txt As String = "Hello"

 ScriptManager.RegisterStartupScript(Me.Page, Me.Page.GetType(), "PopUpScreen", 
  alert('" & txt & "');", True)
End Sub 

答案 1 :(得分:0)

这是WebForms框架的问题之一。你的ASP和C#代码与浏览器中发生的事情相差甚远,很难做到这样的事情。你可以在JavaScript中完成所有这些:

<asp:LinkButton ... OnClientClick='PopUpScreen(this.value);' ... ></asp:LinkButton>

两件事:

  1. OnClientClick的值只是普通的JavaScript,因此this属性中的OnClientClick引用浏览器中的<input type="hidden">标记,并在浏览器。

  2. javascript:属性值中删除OnClientClick。这成为HTML中的onclick属性,浏览器已经知道此属性的值是JavaScript。只有在您计划从链接的javascript:执行JavaScript时,才需要href前缀:

    正确:

    <a href="javascript:alert('Hi!')">Say Hi</a>
    

    不正确:

    <a href="#" onclick="javascript:alert('Hi!')">Say Hi</a>
    

    正确:

    <a href="#" onclick="alert('Hi!')">Say Hi</a>