簡體   English   中英

為在頁面加載時從javascript函數獲取的文本框賦值

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM