2010-07-12 31 views
1

我有一个用户控件选择利用ajax日历扩展器的日期。它也有检查日期格式的JavaScript验证。当加载时间的可见性为真时,控件工作正常。但给JavaScript错误,如果我使它与按钮(服务器控件)点击可见。在使用户控件可见的情况下出现“预期对象”的javascript错误

下面是JavaScript函数来检查

txtDate.Attributes.Add("onblur", "javascript:ValidateDate('" & txtDate.ClientID & "');") 
objStringBuilder.AppendLine("function ValidateDate(d) ") 
objStringBuilder.AppendLine(" {   ") 
objStringBuilder.AppendLine(" var t = document.getElementById(d);") 
objStringBuilder.AppendLine(" if (t.value.toString() != "")") 
objStringBuilder.AppendLine("  {") 
objStringBuilder.AppendLine("  if (isDate(t.value.toString()) == true)") 
objStringBuilder.AppendLine("  {") 
objStringBuilder.AppendLine("   return true;") 
objStringBuilder.AppendLine("  }") 
objStringBuilder.AppendLine("  else") 
objStringBuilder.AppendLine("  { ") 
objStringBuilder.AppendLine("  alert("Please enter valid date in dd/mm/yyyy format");") 
objStringBuilder.AppendLine("  t.value = "";") 
objStringBuilder.AppendLine("  t.focus();") 
objStringBuilder.AppendLine("  return false;") 
objStringBuilder.AppendLine("  }") 
objStringBuilder.AppendLine("  } ") 
objStringBuilder.AppendLine(" } ") 

同时使可见和的onblur它在 txtDate.Attributes.Add("onblur", "javascript:ValidateDate('" & txtDate.ClientID & "');")给错误的日期“

线。原因我想控制的ID没有获得通过,而它使可见的运行时间,但工作得很好,如果在加载过程中的可见性是真的

请帮忙

感谢 安托

+0

一个简单的观察:从第一行删除'javascript:'。 'onblur'表示javascript,所以属性的值应该简单地以函数调用开始。 – 2010-07-12 14:13:21

+0

我也尝试过,但没有使用:( – Antoops 2010-07-12 14:33:32

+0

这是什么最终看起来像当你做一个“查看源代码”的页面? – Pointy 2010-07-12 14:40:07

回答

2

如果你在JavaScript中引用它们不能使用ASP.NET 可见财产。 Visible = false表示控件不会呈现给页面,因此它不在DOM中以供参考。

使用CSS:
DISPLY:none或可见性:隐藏显示/隐藏和你的JavaScript将正常工作。

调试提示:当事情变得毛茸茸的时候去除UpdatePanel,看看发生了什么,然后放回去。

+0

感谢Rick。我没有尝试使用JavaScript的可见属性,但asp:panel的可见属性发生了变化,控件在该面板中。 :面板可见控件也出现,但javascript函数ValidateDate()没有得到用户控件内的文本框的id(客户端ID)..... – Antoops 2010-07-12 17:16:39

+0

我无法解决Javascript问题。我创建了另一个使用所有服务器事件来验证日期的用户控件。 :( – Antoops 2010-07-13 12:49:21

相关问题