Проверить, является ли допустимым значение текстового поля, расширенного с помощью MaskedEditExtender? - PullRequest
0 голосов
/ 19 мая 2010

Ниже мой код:

<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" />

Я установил Culture="auto" UICulture="auto" в директиве @Page и EnableScriptGlobalization="true" EnableScriptLocalization="true" в диспетчере сценариев, чтобы в моем текстовом поле отображался формат даты, специфичный для культуры клиента.

У меня также есть кнопка Go на моей странице, на которой я сделаю частичную запись назад. Итак, я хочу проверить FromDateTextBox в JavaScript, когда нажата кнопка Go.

UPDATE

Я знаю, как создать обработчик щелчков 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 голосов
/ 19 мая 2010

Я решил это. Обычно, когда в текстовое поле введена недопустимая дата, MaskedEditExtender изменяет предоставленный (OnInvalidCssClass="MaskedEditError") класс текстового поля, и я выбрал ее в качестве контрольной точки для проверки.

$('#GoButton').click(function () {
  if($('#<%=FromDateTextBox.ClientID%>').hasClass('MaskedEditError')) {
    return false;
  }
}
0 голосов
/ 19 мая 2010

Извините, вы имеете в виду, что ваш MaskedEditValidator не работает при нажатии кнопки GO? Или если вы хотите написать несколько js, чтобы проверить дату самостоятельно? В этом случае вы можете добавить событие onclick клиента к кнопке GO. Один пример в коде позади:

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

И в файл подкачки добавьте функцию javascript:

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

Теперь, если дата недействительна, CheckDate () вернет false, событие goButton также вернется без отправки назад.

...