我试图阻止用户输入错误的日期。我找到了Momemnt.js来处理日期,它适用于fiddle。
<script type="text/javascript" src='http://momentjs.com/downloads/moment-with-langs.min.js'>
$(document).ready(function() {
function CheckForPastDate(sender, args) {
selectedDate = sender._selectedDate;
var todayDate = new Date();
if (selectedDate.getTime() < todayDate.getTime()) {
sender.selectedDate = todayDate;
sender._textbox.value = moment(selectedDate).format(sender._format);
alert("Wrong date!");
}
}
CheckForPastDate({
_textbox: document.getElementById('<%#TextBox1.ClientID %>'),
_selectedDate: new Date(2013, 5, 3),
_format: 'MMMM Do YYYY, h:mm:ss a'
});
});
</script>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:ToolkitScriptManager ID="ToolkitScriptManager1" runat="server">
</asp:ToolkitScriptManager>
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
<asp:CalendarExtender ID="TextBox1_CalendarExtender" runat="server" Enabled="True"
TargetControlID="TextBox1" OnClientDateSelectionChanged="CheckForPastDate">
</asp:CalendarExtender>
</div>
</form>
</body>
</html>
所以我使用nuget下载了moment.js,但无论如何它都无法正常工作。我没有任何例外,但我也没有得到错误的日期消息。
答案 0 :(得分:1)
假设您在使用之前在页面的某个位置引用moments.js
库,如果您在代码中按此顺序(按此顺序),则在执行Javascript时,控件不会页面上还没有。你应该将javascript放在HTML / ASPX代码下面,或者更好,在文档准备就绪时执行你的javascript。
这与JSFiddle有所不同:javascript代码放在渲染中的HTML代码之后。
您还应该知道,.NET中的不同内容可能会导致控件的客户端ID发生更改。我的意思是,如果你把它放到一个面板中,一旦用HTML呈现你的文本框的结果ID很可能(尽管你现在可以设置它,如果我没有弄错的话)与你在JavaScript的。它将包括所有容器的id,即父面板的ID。
答案 1 :(得分:0)
添加
<script src = 'http://momentjs.com/downloads/moment-with-langs.min.js' />
您必须include
moment
库来调用moment()
函数。
它适用于 fiddle ,因为它包含在外部资源中。