检查使用MaskedEditExtender扩展的文本框的值是否有效?

时间:2010-05-19 05:30:43

标签: asp.net .net-3.5 ajaxcontroltoolkit maskededitextender

以下是我的代码:

<asp:TextBox 
  ID="FromDateTextBox" 
  runat="server" />
<asp:ImageButton 
  ID="FromDateImageButton" 
  runat="server" 
  ImageUrl="~/images/calander.png" />
<ajaxkit:CalendarExtender 
  ID="FromDate" 
  runat="server" 
  TargetControlID="FromDateTextBox" 
  CssClass="CalanderControl" 
  PopupButtonID="FromDateImageButton" 
  Enabled="True" />                
<ajaxkit:MaskedEditExtender 
  id="FromDateMaskedEditExtender" 
  runat="server" 
  targetcontrolid="FromDateTextBox" 
  Mask="99/99/9999" 
  messagevalidatortip="true" 
  onfocuscssclass="MaskedEditFocus" 
  oninvalidcssclass="MaskedEditError" 
  masktype="Date" 
  displaymoney="Left" 
  acceptnegative="Left" 
  errortooltipenabled="True" />
<ajaxkit:MaskedEditValidator 
  id="FromDateMaskedEditValidator" 
  runat="server" 
  controlextender="FromDateMaskedEditExtender" 
  controltovalidate="FromDateTextBox" 
  emptyvaluemessage="Date is required" 
  invalidvaluemessage="Date is invalid" 
  display="Dynamic"
  tooltipmessage="Input a date" 
  emptyvalueblurredtext="*" 
  invalidvalueblurredmessage="*"
  validationgroup="MKE" />

我在@Page指令中设置了Culture="auto" UICulture="auto",在脚本管理器中设置了EnableScriptGlobalization="true" EnableScriptLocalization="true",以便在我的文本框中设置客户端文化特定的日期格式。

我的页面上还有一个Go按钮,我将在其上进行部分回复。因此,我想在点击FromDateTextBox按钮时验证javascript中的Go

更新

我知道如何创建一个javascript点击处理程序。但是因为蒙面编辑器已经在焦点移位上验证日期,我认为应该有一些布尔属性(比如IsValid),它允许我查看文本框是否包含有效日期。

进一步试验

我也试过下面的代码,Page_Validators[f].isvalid总是返回true,即使日期无效且MaskEditValidator在文本框附近显示红星。

function isDateValid() {
  var b = true;              
  for (var f = 0; f < Page_Validators.length; f++) {
    if (!Page_Validators[f].isvalid)
      b = false;
  }
  return b;
}
$('#GoButton').click(function() {

  if (!isDateValid()) {
    return false;
  }
  loadProducts();
});

2 个答案:

答案 0 :(得分:0)

对不起你的意思是你的MaskedEditValidator在点击GO按钮时不起作用?或者,如果你想写一些js来自己检查日期?在这种情况下,您可以将客户端onclick事件添加到GO按钮。代码背后的一个例子是:

goButton.Attributes["onclick"] = "if (!CheckDate()) return false;";

并在页面文件中添加一个javascript函数:

function CheckDate()
{
    //check the date here
    return isValid;
}

现在如果日期无效,CheckDate()将返回false,goButton事件也将返回而不回发。

答案 1 :(得分:0)

我解决了。基本上,当在文本框中输入无效日期时,MaskedEditExtender会更改文本框中提供的(OnInvalidCssClass="MaskedEditError")类,并将其作为检查点进行验证。

$('#GoButton').click(function () {
  if($('#<%=FromDateTextBox.ClientID%>').hasClass('MaskedEditError')) {
    return false;
  }
}
相关问题