Проверьте, действительно ли значение текстового поля расширено с помощью MaskedEditExtender?

76
7

Ниже мой код:


<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" в менеджере script, чтобы иметь конкретный формат даты для клиента в моем текстовом поле.


У меня также есть кнопка 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();
});

спросил(а) 2010-05-19T08:30:00+04:00 10 лет, 1 месяц назад
1
Решение
77

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

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

ответил(а) 2010-05-19T13:27:00+04:00 10 лет, 1 месяц назад
40

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


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

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

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

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

ответил(а) 2010-05-19T08:46:00+04:00 10 лет, 1 месяц назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема