【问题标题】:What is the correct syntax for passing a hidden form field into a JavaScript function?将隐藏的表单字段传递给 JavaScript 函数的正确语法是什么?
【发布时间】:2015-12-09 18:18:15
【问题描述】:

这是我的 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") 时,什么也没有发生。我花了一天多的时间来处理这个问题,一次又一次地调整语法,直到我不再收到任何错误消息。我已经超出了我的绳索。任何人可以为我提供的任何帮助对我来说都意味着世界。如果您需要任何其他信息,请告诉我。

【问题讨论】:

  • 什么是Container.DataItem("ReportToolTipText")?那是一个 ASP 对象吗?
  • 我很确定对Container.DataItem 的引用必须包含在标签&lt;%# 和%&gt; 中才能正常工作。查看呈现页面的 VIEW SOURCE 并找到 LinkButton1 的标记——我想你会发现 Container.DataItem 引用没有“执行”并且在标记中保持不变。
  • 我不懂asp,但我猜OnClientClick='javascript:PopUpScreen(" + Container.DataItem("ReportToolTipText") + ");'的引用有问题
  • 我尝试将 Container.DataItem("ReportToolTipText") 包含在 标记中,当我这样做时,发生了完全相同的事情。没有弹出窗口出现。

标签: javascript jquery html asp.net xml


【解决方案1】:

我刚刚在 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 

【讨论】:

  • 在 alert 之前应该有一个引号 " 但它不允许我把它放进去
【解决方案2】:

这是 WebForms 框架的问题之一。您的 ASP 和 C# 代码与浏览器中发生的情况相去甚远,因此很难做这样的事情。这一切都可以在 JavaScript 中完成:

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

两件事:

  1. OnClientClick的值只是普通的JavaScript,所以OnClientClick属性内的this引用浏览器中的&lt;input type="hidden"&gt;标签,并在浏览器中执行。

    李>
  2. 从OnClientClick 属性值中删除javascript:。这变成了 HTML 中的 onclick 属性,并且浏览器已经知道该属性的值是 JavaScript。仅当您计划从链接的 href 执行 JavaScript 时,才需要 javascript: 前缀:

    正确:

    <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>
    

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多