我有一个vbscript函数,它将从ActiveX控件IntegriSign1中获取一个值,如下面的代码所示。
我的asp.net页面中有一个ASP.net Texbox和ASP.net按钮,如下面的代码所示。
来自我的GetSignData()函数如何使用SignData Value填充txtIntegri1
由于
<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
答案 0 :(得分:2)
你做不到。文本框中的Visible="false"
属性意味着它根本不会呈现为html。就您的浏览器而言,它不存在。
但是把它放在一边(假设你有其他代码可以解决这个问题),你可以使用.ClientID
属性引用控件的ID,正如Ahmad Mageed建议的那样。
答案 1 :(得分:0)
您可以通过修改VBScript来引用文本框的ID,以包含以下内容:
<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>
将其分配给变量以引用文本框,然后为其指定所需的值。
编辑:正如Joel所说,您的文本框的当前可见性阻止了对它的任何访问。要使上述工作正常,您需要显示文本框。
这是我的工作示例。一个区别是onClick事件我不得不删除分号“;”让它触发。如果您启动一个新项目并将其删除,除了顶部的“&lt;%@ 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, StackOverflow!"
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>