Проверка jQuery this.optional (element) всегда false - PullRequest
6 голосов
/ 23 апреля 2010

Я пытаюсь познакомиться с пользовательскими методами проверки jQuery и, похоже, немного запутался. почему this.optional (element) внутри моего пользовательского метода всегда возвращает false?

вот пример моего кода:

<script type="text/javascript">
    $(document).ready(function(){
        $.validator.addMethod('customemethod', function(val, el){
            return this.optional(el) || false;
        }, 'custom method says its INVALID !');
        $('#myform').validate({ignore: '*[ignore]'});
        $('#validate').click(function(){
            $('#result').text($('#myform').validate().form());
            return false;
        });
    });
</script>
<form id="myform">
    <div><input type="text" id="customfield" name="customfield" /></div>
    <script type="text/javascript">
        $(document).ready(function(){$('#customfield').rules('add', { required: true, customemethod: true } ) } );
    </script>
    <div><input type="text" id="customfield2" name="customfield2" /></div>
    <script type="text/javascript">
        $(document).ready(function(){$('#customfield2').rules('add', { required: false, customemethod: true } ) } );
    </script>

    <div id="result"></div>
    <input id="validate" type="submit" />
</form>

в случае, если элемент не требуется и его значение не пустое - вызывается метод проверки, и в этом случае мне нужно вернуть true Но this.optional (el) всегда ложно: (

Как я могу решить это? Как я могу проверить, если элемент требуется или нет внутри пользовательского метода? Спасибо.

1 Ответ

8 голосов
/ 27 июля 2011

optional - false, если значение не пустое, поэтому вы можете выполнить проверку поля, но только если оно не пустое.Например, если адрес электронной почты не является обязательным, вы должны проверить формат, но только если указано значение.optional возвращает значение true, если значение не указано, поэтому остальная часть оценки не выполняется.Это цель этого метода.Если вам нужно, чтобы значение не было пустым, оно должно быть обязательным.если он вам нужен либо пустой, либо нет, вам вообще не нужна проверка.

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