ASP按钮调用JavaScript函数

时间:2010-04-08 15:48:07

标签: asp.net javascript user-controls

我正在尝试使用来自多个来源的代码构建我自己的日期选择器。具体来说,我现在正试图让asp:按钮显示/隐藏日历。

我做错了什么?

myDate.ascx

<%@ Control Language="vb" AutoEventWireup="false" CodeBehind="myDate.ascx.vb"
    Inherits="Website.myDate" %>

<script language="javascript" type="text/javascript">
    function toggleCalendar(myID) {
        var obj = document.getElementById(myID)
        obj.style.display = (obj.style.display == "none") ? "" : "none";
    }
</script>

<asp:TextBox ID="dateText" runat="server" > </asp:TextBox>
<asp:Button ID="dateBtn" runat="server" UseSubmitBehavior="false" Text="x" />
<asp:Calendar ID="dateCal" runat="server" >

</asp:Calendar>

myDate.ascx.vb

Partial Public Class myDate
    Inherits System.Web.UI.UserControl

    Protected Sub Page_Load
      (ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        'Add OnClick event to call JavaScript to toggle calendar display'
        calBtn.Attributes.Add("OnClick", "toggleCalendar(" & cal.ClientID & ")")
    End Sub

End Class

按钮的HTML代码(来自浏览器)

<input type="button" name="ctl03$calBtn" value="x"
       onclick="toggleCalendar(ctl03_cal);__doPostBack('ctl03$calBtn','')" 
       id="ctl03_calBtn" />

3 个答案:

答案 0 :(得分:1)

由于您的操作都是客户端。如何定义常规HTML按钮?

<input type="button" value="X" onclick='toggleCalendar("<%=cal.ClientID%>");'/>

答案 1 :(得分:0)

看起来你需要添加一个“return false;”声明到您的attributes.add行。

calBtn.Attributes.Add("OnClick", "toggleCalendar(" & cal.ClientID & "); return false;")

这应该可以防止在您的webForm中触发回发事件。

答案 2 :(得分:-2)

是asp只使用OnClientClick()而不是OnClick() 享受:)