При использовании MaskedEditExtender для Masktype Time, как переопределить нежелательное поведение? - PullRequest
4 голосов
/ 11 января 2011

Следующие две строки работают нормально, если ввод правильно указан:

<asp:TextBox ID="MondayOpenTextBox" runat="server" MaxLength="5" />
<Ajax:MaskedEditExtender ID="MondayOpenMaskedEditExtender" runat="server" 
    TargetControlID="MondayOpenTextBox" AcceptAMPM="false" MaskType="Time" 
    Mask="99:99" />

Если пользователь вводит «12», а затем вкладки к следующему полю, минуты заполняются текущей минутой. Это не желательно для рассматриваемой страницы. Я либо хотел бы вывести сообщение об ошибке, либо ввести «00» для пропущенных цифр.

Это не помогает:

<asp:RegularExpressionValidator runat="server" ID="ValidateMondayOpenTextBox" 
    ControlToValidate="MondayOpenTextBox" Display="Dynamic" ErrorMessage="X" 
    ValidationExpression="\d\d:\d\d" />

поскольку поле, очевидно, отформатировано к тому моменту, когда валидатор получит свою очередь.

Ответы [ 2 ]

4 голосов
/ 11 января 2011

Вы можете установить для свойства AutoComplete вашего MaskedEdit extender значение false, чтобы предотвратить заполнение пустых маскированных символов текущим временем:

<Ajax:MaskedEditExtender ID="MondayOpenMaskedEditExtender" runat="server"
    TargetControlID="MondayOpenTextBox" AcceptAMPM="false" MaskType="Time"
    Mask="99:99" AutoComplete="False" />

Таким образом, ваш валидатор сможет правильно выполнять свою работу.

1 голос
/ 28 января 2013

Чтобы заполнить его: 00, вы можете установить для свойства AutoCompleteValue значение "99:00"

...