如何从代码隐藏调用javascript函数

时间:2011-01-31 07:51:10

标签: javascript asp.net

我用asp.net页面写了一个javascript。

在Asp.net页面

<HTML> <HEAD>
     <script type="text/javascript">
      function Myfunction(){
          document.getElementId('MyText').value="hi";
      }
      </script>
</HEAD> <BODY>
<input type="text" id="MyText" runat="server" /> </BODY>

在代码隐藏

 Private Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)
  Handles Me.Load
       If Session("My")= "Hi" Then
          I want to call "Myfunction" javascript function
       End If 
 End Sub

我该怎么办?

5 个答案:

答案 0 :(得分:68)

这样做的一种方法是使用ClientScriptManager

Page.ClientScript.RegisterStartupScript(
    GetType(), 
    "MyKey", 
    "Myfunction();", 
    true);

答案 1 :(得分:40)

这是一种从后面的代码中调用一个或多个java脚本方法的方法。 通过使用脚本管理器,我们可以按顺序调用方法。考虑下面的loc foe示例。

ScriptManager.RegisterStartupScript(this, typeof(Page), "UpdateMsg", 
   "$(document).ready(function(){EnableControls();
   alert('Overrides successfully Updated.');DisableControls();});", true);

在第一个方法中调用EnableControls()。 接下来将显示警报。 接下来将调用DisableControls()方法。

答案 2 :(得分:13)

有一种非常简单的方法可以做到这一点。它涉及从后面的代码向标签控件注入javascript代码。这是示例代码:

<head runat="server"> 
    <title>Calling javascript function from code behind example</title> 
        <script type="text/javascript"> 
            function showDialogue() { 
                alert("this dialogue has been invoked through codebehind."); 
            } 
        </script> 
</head>

..........

lblJavaScript.Text = "<script type='text/javascript'>showDialogue();</script>";

在这里查看完整代码: http://softmate-technologies.com/javascript-from-CodeBehind.htm (死)
来自互联网档案的链接:https://web.archive.org/web/20120608053720/http://softmate-technologies.com/javascript-from-CodeBehind.htm

答案 3 :(得分:1)

如果执行的顺序并不重要,并且您需要同时在asp元素上触发一些JavaScript和一些代码隐藏,那么您可以执行以下操作。 < / p>

您可以从我的示例中得到什么: 我有一个涵盖ASP控件的div,我想同时运行javascript和codebehind。 div的onClick方法和日历的OnSelectionChanged事件都以这种方式触发。

在此示例中,我正在使用ASP Calendar控件,并通过javascript和后台代码对其进行即时控制:

前端代码:

        <div onclick="showHideModal();">
            <asp:Calendar 
                OnSelectionChanged="DatepickerDateChange" ID="DatepickerCalendar" runat="server" 
                BorderWidth="1px" DayNameFormat="Shortest" Font-Names="Verdana" 
                Font-Size="8pt" ShowGridLines="true" BackColor="#B8C9E1" BorderColor="#003E51" Width="100%"> 
                <OtherMonthDayStyle ForeColor="#6C5D34"> </OtherMonthDayStyle> 
                <DayHeaderStyle  ForeColor="black" BackColor="#D19000"> </DayHeaderStyle>
                <TitleStyle BackColor="#B8C9E1" ForeColor="Black"> </TitleStyle> 
                <DayStyle BackColor="White"> </DayStyle> 
                <SelectedDayStyle BackColor="#003E51" Font-Bold="True"> </SelectedDayStyle> 
            </asp:Calendar>
        </div>

隐藏代码:

        protected void DatepickerDateChange(object sender, EventArgs e)
        {
            if (toFromPicked.Value == "MainContent_fromDate")
            {
                fromDate.Text = DatepickerCalendar.SelectedDate.ToShortDateString();
            }
            else
            {
                toDate.Text = DatepickerCalendar.SelectedDate.ToShortDateString();
            }
        }

答案 4 :(得分:0)

asp:运行javascript方法

将此行添加到页面底部的 </form> 标记之前,至少在您编写的 js 函数下。

<块引用>

这样做的原因是避免在你之前调用你的方法 浏览知道是什么功能,最后什么都不做。

<% Response.Write($"<script>yourfunction('{Config.id}');</script>"); %>

ps: 我已经尝试了那里的所有方法,但对我来说没有任何效果。我自己想出了这个简单而奇妙的调用js方法的方法!