gpt4 book ai didi

javascript - 从 CodeBehind 调用 JavaScript 函数无法填充 getElementbyID

转载 作者:行者123 更新时间:2023-12-02 16:56:51 25 4
gpt4 key购买 nike

我必须在发布的表单中填写隐藏元素。当您单击发布表单的按钮时,元素就会被填充。

<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">
<!-- setting all the hidden fields --->
<script type="text/javascript" >
function fnGetPara() {
document.getElementById('EPS_MERCHANT').value = bta_merchant;
document.getElementById('EPS_TXNTYPE').value = bta_txntype;
document.getElementById('EPS_REFERENCEDID').value = bta_referenceId;
document.getElementById('EPS_AMOUNT').value = bta_amount;
document.getElementById('EPS_TIMESTAMP').value = bta_timestamp;
document.getElementById('EPS_FINGERPRINT').value = bta_fingerprint;
document.getElementById('EPS_RESULTURL').value = bta_jumpback;
}
</script>
<!-- finish setting all the hidden fields --->
<form method="post" action="https://....." id="form1" runat="server">
<div class="docdisplay">
<!-- merchant -->
<input type="hidden" name="EPS_MERCHANT" id="EPS_MERCHANT" />
<!-- transaction -->
<input type="hidden" name="EPS_TXNTYPE" id="EPS_TXNTYPE" />
<!-- reference -->
<input type="hidden" name="EPS_REFERENCEDID" id="EPS_REFERENCEDID"/>
<!-- amount to be paid -->
<input type="hidden" name="EPS_AMOUNT" id="EPS_AMOUNT" />
<!-- Timestamp -->
<input type="hidden" name="EPS_TIMESTAMP" id="EPS_TIMESTAMP"/>
<!-- fingerprint -->
<input type="hidden" name="EPS_FINGERPRINT" id="EPS_FINGERPRINT" />
<!-- where we want to go after the payment -->
<input type="hidden" name="EPS_RESULTURL" id="EPS_RESULTURL" />
....
</div>
<div class="docbuttons">
<asp:Button ID="lblauth" runat="server" Text="Authorise payment" OnClick="lblauth_Click" />
</div>

以及方法:

protected void lblauth_Click(object sender, EventArgs e)
{
// get bank transaction data
bankTransAct.setTransactValues(orderId, invoiceNo, orderpaid, out bta_merchant, out bta_pw, out bta_txntype, out bta_amount, out bta_referenceId, out bta_timestamp, out bta_fingerprint);

Page.ClientScript.RegisterStartupScript(this.GetType(), "CallfnGetPara", "fnGetPara()", true);
}

“bankTransAct”方法收集这些隐藏字段的值。

我尝试过带 EPS 或不带 .value 的 id 值。字段 bta_fields 定义如下:

public partial class smsfannrm5 : System.Web.UI.Page
{
//global variables
....

string bta_merchant = string.Empty;
string bta_pw = string.Empty;
string bta_txntype = string.Empty;
decimal bta_amount = 0;
string bta_referenceId = string.Empty;
string bta_timestamp = string.Empty;
string bta_fingerprint = string.Empty;
string bta_jumpback = string.Empty;

protected void Page_Load(object sender, EventArgs e)
{........

每次我跟踪页面时,它都会显示隐藏字段未填充?!当我手动填写隐藏字段时,页面可以正常工作。

感谢任何反馈。我看不出我在哪里犯了错误?

最佳答案

看起来您正在尝试至少执行以下操作之一:

  • 访问 ASP.NET 变量,例如bta_merchant ,来自 JavaScript;或
  • 让 ASP.NET 代码隐藏读取 HTML 的值 input尚未标记为 runat="server"

这不起作用,因为客户端的 JavaScript 引擎未连接到 ASP.NET 服务器后端。

我在这里猜测你的用例,但我认为你想要做的是使所有隐藏 input服务器端控件,即可以从 C# 代码隐藏进行访问。如果是这种情况,请将它们声明为

<input type="hidden" name="whatever"  id="whatever" runat="server" />

然后从代码隐藏中设置它们的值,而不是 JavaScript。您将能够在回发时读取它们的值,或者如果您提交到第三方支付网关或其他任何地方,它们将与表单数据一起提交。

如果需要从 JavaScript 访问 HTML 元素,ASP.NET 将呈现一个与 C# 属性名称不同的 ID 属性,因此您需要使用 ClientID属性:

<script>
var element = document.getElementById('<%= serverSideObject.ClientID %>');
</script>
<小时/>

如果生成的客户端元素的名称和ID很重要,并且您不需要返回该值(即,如果表单永远不会回发),那么您可以这样做相反:

在这种情况下,您可以编写如下内容:

<input type="hidden" name="whatever"  id="whatever" value="<%= someCSharpExpression %>" />

请注意,该元素不是服务器端元素;它没有 runat="server"属性。因此 ASP.NET 不会破坏元素名称或 ID。 ASP.NET 所做的唯一特别的事情是评估 someCSharpExpression ,将其转换为字符串,然后插入它而不是 <%= … %> .

关于javascript - 从 CodeBehind 调用 JavaScript 函数无法填充 getElementbyID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26111713/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com