在ASP.net按钮单击使用VB脚本填充一个ASP.Net文本框

问题描述:

我有一个vbscript函数,它将从ActiveX控件IntegriSign1中获得一个值,如下面的代码所示。在ASP.net按钮单击使用VB脚本填充一个ASP.Net文本框

我在我的asp.net页面中有一个ASP.net Texbox和ASP.net按钮,如下面的代码所示。

从我GetSignData()函数,我怎么能填充txtIntegri1与SignData价值

感谢

<script type="text/vbscript" > 
    sub GetSignData() 
     SignData=window.document.IntegriSign1.GetSignData() 
     'window.document.frmIntegriSign.txthashdata.value 
     set t1=window.document.getElementById("<%=txtIntegri1.clientID%>") 
     If tl<> null Then 
      t1.value=SignData 
     else 
      msgbox signData 
     End If 
    end sub 
</script> 
<asp:TextBox ID="txtIntegri1" runat="server" ></asp:TextBox> 
<input type="button" id="btnAccept" name="btnAccept" runat="server" value="Accept " onclick="GetSignData();" /> 

我得到一个错误对象所需txtIntegri

您可以参考文本框的ID修改您的VBScript以包含如下内容:

<script type="text/vbscript" > 
    sub GetSignData() 
     ' assign SignData 
     ' SignData=window.document.IntegriSign1.GetSignData() 

     set txtIntegri = document.getElementById("<%= txtIntegri1.ClientID %>") 
     txtIntegri.value = SignData 
    end sub 
</script> 

将其分配给变量以引用文本框,然后为其分配所需的值。

编辑:作为乔尔提到,您的文本框的当前可见性阻止任何访问它。为了上面的工作,你需要显示文本框。


这是我的工作示例。一个区别在于onClick事件中我必须删除分号“;”让它触发。如果您启动一个新项目并将其放入,不包括顶部的“<%@ Page ...”声明,您应该能够看到正在更新的文本框。

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="WebApplication1._Default" %> 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head runat="server"> 
    <title></title> 
    <script type="text/vbscript"> 
     sub GetSignData() 
      signData = "Hello, *!" 
      set myTextbox = document.getElementById("<%= Textbox1.ClientID %>") 
      myTextbox.value = signData 
     end sub 
    </script> 
</head> 
<body> 
    <form id="form1" runat="server"> 
    <div> 
     <asp:TextBox ID="Textbox1" runat="server" Text="Hello, World!" /> 
     <input type="button" id="btnAccept" name="btnAccept" runat="server" value="Accept " onclick="GetSignData()" /> 
    </div> 
    </form> 
</body> 
</html> 
+0

嗨,当我添加此,我得到一个错误 window.document.hdIntegriSign1.clientID.value = SignData 对象不suppoert widow.document.hdIntegriSign1属性或方法 – acadia 2009-09-08 20:24:12

+0

@acadia:请更新您的问题,您的最新的代码,所以我们可以帮助你更好。我已更新我的帖子以显示如何设置txtIntegri1文本框。你提到的错误似乎是你如何获得SignData值的一部分。 – 2009-09-08 21:20:15

+0

Ahmad Mageed,我已经更新了代码和错误消息,我能够正确获取SignData值,但是当我尝试设置文本框的值时,它正在抛出对象所需的错误。谢谢 – acadia 2009-09-09 14:20:52

你不能。您的文本框上的Visible="false"属性意味着它根本不呈现为html。就您的浏览器而言,它不存在。

但是放在一边(假设您有其他代码可以纠正这种情况),您可以使用Ahmad Mageed建议的.ClientID属性引用该控件的ID。

+0

好赶上:) ... 15个字符 – 2009-09-08 16:11:23