jQuery .validator.addMethod не выполняется - PullRequest
0 голосов
/ 28 января 2020

Это упрощенная версия страницы, над которой я работал; У меня есть базовая c проверка работоспособности здесь , но я хочу интегрироваться с валидатором jQuery, чтобы получать встроенные сообщения об ошибках вместо просто блоков предупреждений.

<html>
    <head>
        <title>pick a box, its contents will help you on your way!</title>
        <script src="jQuery-1.4.4-min.js"></script>
        <script src="jQuery-validate.js"></script>
    </head>
    <body>
        <form id="fred">
            <input class="Notes8" name="Notes8~1" id="Notes8~1" type="checkbox" value="Yes">&nbsp;&nbsp;Option 1<br>
            <input class="Notes8" name="Notes8~2" id="Notes8~2" type="checkbox" value="Yes">&nbsp;&nbsp;Option 2<br>
            <input class="Notes8" name="Notes8~3" id="Notes8~3" type="checkbox" value="Yes">&nbsp;&nbsp;Option 3<br>
            <script type='text/javascript'>
                jQuery(function($) {
                    function validateMultiple (selector, n, isExactlyN) {
                        const totChecked = $(selector).filter(':checked').length;
                        return !(isExactlyN ? totChecked == n : totChecked >= n);
                    }
                    jQuery.validator.addMethod('.Notes8',
                        function(value, element) {
                            return validateMultiple('.Notes8', 1);
                        },
                        'Please check at least one check box.');
                });
            </script>
            <button type="submit">SUBMIT!</button>
        </form>
     </body>
 </html>

Проблема в том, вызов jQuery.validator.addMethod не работает; проверка не происходит, и если я помещаю alert("FRED"); в function(value, element), то ничего не отображается, указывая, что метод валидатора никогда не был подключен должным образом Почему это? Как я могу заставить функцию проверки выполняться при отправке формы? Я не вижу ошибок JavaScript в консоли браузера.

1 Ответ

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

Вы забыли назвать validate метод: $("#fred").validate();. Также была проблема с вашим кодом проверки - я удалил ненужное отрицание. Также вам не нужна точка в name параметре в addMethod.

<html>

<head>
    <title>pick a box, its contents will help you on your way!</title>
    <script src="jQuery-1.4.4-min.js"></script>
    <script src="jQuery-validate.js"></script>
</head>

<body>
    <form id="fred">
        <input class="Notes8" name="Notes8~1" id="Notes8~1" type="checkbox" value="Yes">&nbsp;&nbsp;Option 1<br>
        <input class="Notes8" name="Notes8~2" id="Notes8~2" type="checkbox" value="Yes">&nbsp;&nbsp;Option 2<br>
        <input class="Notes8" name="Notes8~3" id="Notes8~3" type="checkbox" value="Yes">&nbsp;&nbsp;Option 3<br>
        <script type='text/javascript'>
            jQuery(function ($) {
                function validateMultiple(selector, n, isExactlyN) {
                    var totChecked = $(selector).filter(':checked').length;
                    return (isExactlyN ? totChecked == n : totChecked >= n);
                }
                jQuery.validator.addMethod('Notes8',
                    function (value, element) {
                        return validateMultiple('.Notes8', 1);
                    },
                    'Please check at least one check box.');
            });
            $("#fred").validate();
        </script>
        <button type="submit">SUBMIT!</button>
    </form>
</body>

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