我一直试图找到答案,但我发现的每一个答案似乎与我真正想要的东西有点不同。
我需要检查以确保在运行可以对文本框起作用的C#函数之前填写了两个ASP文本框。
目前,我正在使用codebehind进行检查,但它很草率,必须回发才能工作。
所以我有:
<td>Start Date (mm/dd/yyyy):</td><td><asp:TextBox ID="startDate" runat="server"></asp:TextBox></td>
<ajax:CalendarExtender ID="ce1" runat="server" TargetControlID="startDate"></ajax:CalendarExtender>
<td>End Date (mm/dd/yyyy):</td><td><asp:TextBox ID="endDate"></asp:TextBox></td>
<ajax:CalendarExtender ID="ce2" runat="server" TargetControlID="endDate"></ajax:CalendarExtender>
因此,在使用AJAX运行C#程序之前,我需要一个JS函数来检查两个字段是否为空。我是ASP和JS的新手,但这个问题来了,并认为这将是一种(某种)简单的修复。
我会假设:
function checkDates(startid, endid) {
var s = document.getElementById(startid);
var e = document.getElementById(endid);
if( s != '' && e != ''){
//Use ajax to run C# function
}}
应该有效。但我似乎无法找到任何接近它的例子来了解在处理ASP而不仅仅是HTML时我需要做什么。
非常感谢任何输入! (我试图尽可能清楚,获得隧道视野......)
答案 0 :(得分:0)
你快到了
function checkDates(startid, endid) {
var s = document.getElementById(startid);
var e = document.getElementById(endid);
if( s.value != '' && e.value != ''){
//Use ajax to run C# function
}
}
您还应该检查服务器端,以确保提供的参数不为null或为空。
答案 1 :(得分:0)
这对你有用。我构建了一个对象来帮助保持组织有序。使用ClientID获取元素并将引用存储在对象中。
无论您将处理程序绑定到只需要调用Page.Handlers.CheckDates();
var Page =
{
Members:
{
startDate: document.getElementById('<%=startDate.ClientID %>'),
endDate: document.getElementById('<%=endDate.ClientID %>')
},
Handlers:
{
CheckDates: function ()
{
if (Page.Members.startDate.value.length > 0 && Page.Members.endDate.value.length > 0)
{
Page.Ajax.ValidateDates();
}
}
},
Ajax:
{
ValidateDates: function ()
{
//Put you ajax code here
}
}
}
答案 2 :(得分:-1)
除了Kami的回答之外,我相信asp.net会自动为所有asp.net控件添加标签以区分它们。如果你自己没有改变它,我相信默认是“ct100_”。因此,如果你使用的是jQuery并且没有使用ajax调用来获取ClientID,则选择器看起来像“#ct100_idname”。
http://www.asp.net/web-forms/tutorials/master-pages/control-id-naming-in-content-pages-cs
编辑:
您还可以使用内联服务器调用来获取asp.net控件的ID
http://weblogs.asp.net/asptest/archive/2009/01/06/asp-net-4-0-clientid-overview.aspx