我正在尝试使用来自多个来源的代码构建我自己的日期选择器。具体来说,我现在正试图让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" />
答案 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() 享受:)