Проверка jquery останавливает отправку страницы, когда необязательное поле пусто - PullRequest
2 голосов
/ 13 мая 2010

Я использую jquery для проверки формы asp.net (содержимое на главной странице).Все обязательные проверки полей работают отлично, но у меня есть поле, которое не обязательно, но если оно имеет текст, то оно должно быть в правильном формате.Jquery проверяет некорректный текст просто отлично, но когда текст пустой, он останавливает отправку формы (хотя сообщения об ошибке нет).У кого-нибудь есть идея, почему это может происходить или что с этим делать?

 // Add validation rule for email
            if ($("input[id$='TextBoxEmail']").length) {
                $("input[id$='TextBoxEmail']").rules('add', {
                    required: false,
                    email: true,
                    messages: {
                        email: 'Please enter a valid email.'
                    }
                }); 
            } 

Ответы [ 2 ]

0 голосов
/ 10 ноября 2011

Мы обнаружили, что обходной путь для этого - вручную удалить проверку на основе наших критериев.

// Add validation rule for first name (default Person type is Individual so the validation is needed as default)
            if ($("input[id$='TextBoxFirstName']").length) {
                $("input[id$='TextBoxFirstName']").rules('add', {
                    required: true,
                    messages: {
                        required: 'First Name is required for individuals.'
                    }
                });
            }   

// Add event for checking if first name validation is needed
            $('select[id$=DropDownListPersonType]').change(function () {
                if ($('select[id$=DropDownListPersonType] option:selected').text() == 'Individual') {
                    // Add validation rule
                    $("input[id$='TextBoxFirstName']").rules('add', {
                        required: true,
                        messages: {
                            email: 'First Name is required for individuals.'
                        }
                    });
                }
                else {
                    // remove rule
                    $("input[id$='TextBoxFirstName']").rules("remove");
                }
            });
0 голосов
/ 08 июля 2011

Я только что настроил аналогичный тест и не могу повторить проблему (см. Код ниже):

    <script type="text/javascript">
    $(document).ready(function () {
        $("#test").validate();

        if ($("input[id$='txtText']").length) {
            $("input[id$='txtText']").rules('add', {
                required: false,
                email: true,
                messages: {
                    email: 'Please enter a valid email.'
                }
            });
        }
    });
</script>

<form id="test">
    <input type="text" id="txtText" />
    <input type="submit" />
</form>

Я использую jQuery 1.5.1 и последнюю версию jquery.validate.min.js

Я могу только предложить, чтобы вы сделали селектор jQuery более конкретным, поскольку id$='TextBoxEmail' означает, что он заканчивается на «TextBoxEmail». Это может быть проблемой, если у вас есть конфликтующие имена полей?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...