[英]assign value to a textbox obtained from a javascript function on page load
快速背景:我是编程新手,已经使用VisualStudio,ASP.NET和C#几个月了。 我没有使用JavaScript的经验。 我正在尝试将时间从UTC转换为浏览器查看页面的本地时间。 经过研究后,我认为我需要做的各种事情的最佳选择是在页面加载时检测UTC的本地偏移量,然后保存该信息以用于本地转换和回发到服务器。
我在“源”页面中编写了以下js函数:
<script type="text/javascript" >
function calculateOffset() {
var rightNow = new Date();
var UTCTime = rightNow.getUTCHours();
var LocalTime = rightNow.getHours();
var UTCDate = rightNow.getUTCDate();
var LocalDate = rightNow.getDate();
if (UTCDate == LocalDate) {
var offset = LocalTime - UTCTime;
}
else {
var offset = LocalTime - 24 - UTCTime;
}
return offset;
}
</script>
然后我有一个TextBox控件,我想用它来保存返回的偏移量:
<asp:TextBox ID="HiddenOffsetBox" runat="server" Visible="False" Text ="<%# calculateOffset() %>" ></asp:TextBox>
我在调试时收到以下错误:编译器错误消息:CS0103:当前上下文中不存在名称'calculateOffset'
这是在从母版页继承的子页面中,我尝试将JS放在头部和正文内容中,我还创建了一个.js文件,但还没弄明白如何调用它。 主要是我正在寻找一种方法来将JS函数的偏移量输出到文本框中,但如果您有任何其他建议我欢迎他们。 提前谢谢!
编辑我创建了一个测试asp.net Web表单来尝试下面的建议,简化这里的一切是代码:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="TestForm.aspx.cs" Inherits="GTLWebApp.TestForm" %>
<!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">
<script type="text/javascript" >
$(document).ready(function () {
// recommend using jQuery to make sure the page is loaded
document.getElementById('<%= HiddenOffsetBox.ClientID%>').text = calculateOffset();
//or
//jQuery way
//$('#<%= HiddenOffsetBox.ClientID%>').val(calculateOffset());
function calculateOffset() {
var rightNow = new Date();
var UTCTime = rightNow.getUTCHours();
var LocalTime = rightNow.getHours();
var UTCDate = rightNow.getUTCDate();
var LocalDate = rightNow.getDate();
if (UTCDate == LocalDate) {
var offset = LocalTime - UTCTime;
}
else {
var offset = LocalTime - 24 - UTCTime;
}
return offset;
}
</script>
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:TextBox ID="HiddenOffsetBox" runat="server" Visible="True" Text = ""></asp:TextBox>
</div>
</form>
</body>
</html>
当我运行这个我没有错误,但我没有得到文本框中的偏移量,任何进一步的帮助将不胜感激...
<script type="text/javascript" >
//un-comment for jQuery
//recommend using jQuery to make sure the page is loaded
//$(document).ready(function() {
// $('#<%= HiddenOffsetBox.ClientID%>').val(calculateOffset());
//});
document.getElementById('<%= HiddenOffsetBox.ClientID%>').value = calculateOffset();
function calculateOffset() {
var rightNow = new Date();
var UTCTime = rightNow.getUTCHours();
var LocalTime = rightNow.getHours();
var UTCDate = rightNow.getUTCDate();
var LocalDate = rightNow.getDate();
if (UTCDate == LocalDate) {
var offset = LocalTime - UTCTime;
}
else {
var offset = LocalTime - 24 - UTCTime;
}
return offset;
}
</script>
<asp:hidden ID="HiddenOffsetBox" runat="server" value="" ></asp:hidden>
以下是为我工作。
this.ClientScript.RegisterStartupScript(this.GetType(), "key", "<script type='text/javascript'> calculateOffset() </script>");
只需在Page_Load事件上粘贴此行即可。
也可以直接将“offset”的值分配给文本框,而不是“返回偏移量”:
document.getElementById("<%=HiddenOffsetBox.ClientID %>").value = offset;
希望这可以帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.