【问题标题】:how to cal javascript method in server side button control?如何在服务器端按钮控件中调用 javascript 方法?
【发布时间】:2013-10-07 04:09:52
【问题描述】:
  function calcRoute() {
        var start = document.getElementById('start').value;
        var end = document.getElementById('end').value;


        var request = {
            origin: start,
            destination: end,

            travelMode: google.maps.TravelMode.DRIVING
        };
        directionsService.route(request, function(response, status) {
            if (status == google.maps.DirectionsStatus.OK) {
                directionsDisplay.setDirections(response);
                var route = response.routes[0];
                var summaryPanel = document.getElementById('directions_panel');
                summaryPanel.innerHTML = '';
                // For each route, display summary information.
                for (var i = 0; i < route.legs.length; i++) {
                    var routeSegment = i + 1;
                    summaryPanel.innerHTML += '<b>Route Segment: ' + routeSegment + '</b><br>';
                    summaryPanel.innerHTML += route.legs[i].start_address + ' to ';
                    summaryPanel.innerHTML += route.legs[i].end_address + '<br>';
                    summaryPanel.innerHTML += route.legs[i].distance.text + '<br><br>';
                }
            }
        });
    }

    google.maps.event.addDomListener(window, 'load', initialize);

我的按钮事件未触发...我想使用服务器端控件的两个下拉列表控件显示获取方向,但我的按钮事件未触发...我要做什么?

 <asp:Button ID="btnsubmit" runat="server" OnClientClick="return calcRoute();" Text="Submit" />

如何在服务器端调用 javascript 方法...请告诉我..

【问题讨论】:

  • 你试过调试javascript吗?设置断点。看看这个函数是否被调用了?
  • 它不叫那个功能...为什么?
  • 好吧,你的页面有 javascript 错误
  • 不,我没有收到任何错误...但这不是 cal 方法..这里发生了什么?

标签: c# javascript asp.net google-maps


【解决方案1】:

为什么首先要有一个服务器端按钮?

按钮不调用提交事件,也不回传到服务器。那么为什么不简单地使用一个普通的 html 按钮呢?

即使您的 Javascript 函数也不会返回 true 或 false,因此使用 return calcRoute() 将始终返回 false 事件。

无论如何,请尝试使用普通的 onClick 事件而不是 OnClientClick。

编辑

在我看来,你在这里所做的很多事情都可以使用 jQuery 以比你在这里尝试做的更好的方式来解决。

【讨论】:

  • 我已经尝试过html控件..但是没有用...可能是服务器端使用了下拉列表控件..这就是为什么我使用服务器端按钮...没有用...
  • 您是否尝试将 alert(9) 作为函数的第一行,以查看您是否真的进入了那里?
  • 如果失败,请删除函数中的所有代码并再次测试。代码中可能有错误阻止它执行
  • 这里发生了什么...有什么问题
  • 我的 Button 现在正在收到 PostBack,这可能是个问题。所以添加返回错误条件..它会正常工作...感谢您的回复..
【解决方案2】:
Syntax : 
public void RegisterClientScriptBlock(
    Type type,
    string key,
    string script,
    bool addScriptTags
)

Parameters

type
    Type: System.Type

    The type of the client script to register. 

key
    Type: System.String

    The key of the client script to register. 

script
    Type: System.String

    The client script literal to register. 

addScriptTags
    Type: System.Boolean

    A Boolean value indicating whether to add script tags.

  public void Page_Load(Object sender, EventArgs e)
  {
    // Define the name and type of the client scripts on the page.
    String csname1 = "PopupScript";
    String csname2 = "ButtonClickScript";
    Type cstype = this.GetType();

    // Get a ClientScriptManager reference from the Page class.
    ClientScriptManager cs = Page.ClientScript;

    // Check to see if the startup script is already registered.
    if (!cs.IsStartupScriptRegistered(cstype, csname1))
    {
      String cstext1 = "alert('Hello World');";
      cs.RegisterStartupScript(cstype, csname1, cstext1, true);
    }

    // Check to see if the client script is already registered.
    if (!cs.IsClientScriptBlockRegistered(cstype, csname2))
    {
      StringBuilder cstext2 = new StringBuilder();
      cstext2.Append("<script type=\"text/javascript\"> function DoClick() {");
      cstext2.Append("Form1.Message.value='Text from client script.'} </");
      cstext2.Append("script>");
      cs.RegisterClientScriptBlock(cstype, csname2, cstext2.ToString(), false);
    }
  }

【讨论】:

    【解决方案3】:

    我没有添加“返回”错误条件...我的 Button 现在正在收到 PostBack,这可能是个问题。所以添加

    返回假;

    条件..

    然后它会工作正常...感谢您的响应..

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-11-03
      • 2023-03-25
      • 2011-08-05
      • 1970-01-01
      • 1970-01-01
      • 2014-03-16
      • 2011-08-23
      相关资源
      最近更新 更多