Обязательное поле Валидатор неправильно проваливает проверку в отключенном текстовом поле - PullRequest
0 голосов
/ 07 октября 2009

Обязательный валидатор поля, кажется, всегда срабатывает, когда соответствующее текстовое поле отключено (независимо от того, содержит текстовое поле текст или нет).

Когда текстовое поле включено, валидатор ведет себя корректно.

Кто-нибудь может сказать мне, почему?

Я пытался отключить обязательный валидатор поля с помощью ValidatorEnable, но, похоже, это не имеет значения.

Вот соответствующий HTML-код со страницы (вырублено):

    <tr id="trBrokerNetID" runat="server">
    <td>
        <cc1:mitextbox id="txtBrokerNetID" runat="server" cssclass="bodytext" width="220px" maxlength="20" onBlur="JavaScript:CheckBrokerBranch(false);"></cc1:mitextbox>
        <asp:requiredfieldvalidator id="rfvBrokerNetID" runat="server" width="1px" errormessage="BrokerNetID - Please supply a value" controltovalidate="txtBrokerNetID">*</asp:requiredfieldvalidator>
    </td>
</tr>

Любые идеи с благодарностью приняты.

Ответы [ 3 ]

1 голос
/ 08 октября 2009

Теперь я не знал, что когда на клиентской стороне отключен элемент управления , он не включается в обратную передачу.

Именно поэтому проверка на стороне сервера была запущена. Насколько это было возможно, контроль был пуст.

Решение состоит в том, чтобы использовать свойство readOnly, а не отключенное свойство.

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

1 голос
/ 07 октября 2009

Валидаторы ASP.NET работают таинственным образом: D

Прежде всего, опасно использовать идентификатор элемента управления ASP.NET для доступа к нему в jQuery. Если вы поместите элемент управления в повторитель или перенесете страницу на главную страницу, то идентификатор элемента html будет отличаться от указанного вами идентификатора. Вместо этого используйте класс для доступа к элементу.

Если валидаторы ASP.NET хотят, чтобы поле было включено, то вы должны попробовать другой подход. Мое предложение будет следующим:

1. Добавьте класс в текстовое поле, чтобы он выглядел отключенным:

$("#txtBrokerNetID").addClass("thisClassMakesItLookDisabled");

2. Добавьте событие, которое проверяет фокус на текстовом поле и размывает его, если есть фокус:

$("#txtBrokerNetID").focus(function() {
  $(this).blur();
});

Теперь поле ведет себя так, как будто оно отключено, и валидатор работает.

0 голосов
/ 07 октября 2009

Один из вариантов, который вы можете выбрать, - установить группу ValidationGroup, чем та, которую использует форма, а затем при проверке формы вызвать Page_ClientValidate('text_validation_group'), если необходимо. Таким образом, проверка клиента не помешает.

...