JQuery проверить AddMethod не работает - PullRequest
0 голосов
/ 08 марта 2011

Следующий код выдает ошибку, если выполняются условия, но не удаляет класс ошибки, если исправлено.В основном, если вы проверяете «#MKDPT» и ни один в массиве не проверяется, покажите ошибку.Если какие-либо элементы массива проверены, удалите или не отображайте ошибку.

$.validator.addMethod('MKDPTOnly', function(value, element) {
            var ckd = ['AMX1N','BMFNP','BMFNB','CFE1N','CBEXR','CBT1','CBTQL','CME1','CMEQL','CMX1','DCMX1','DMERT','DMEDL','ERX1N','ERXXN','EXC1N','EXD1N','EXR1N','EXI1N','IPE1','KCB1','LME1','DLME1','MPL1','NDQ1N','NDQL2','CEC1','ICEFI','NYM1','DNYM1','NYMQL','NYS1N','NYSLM','PNK1P','PNK2N','SMX1', 'CNC1N','CNS1N','MTL1N','MTL2N','MTN1N','MTN2N','WEA1'];
            var otherChecked = $('#' + ckd.join(',#')).filter(':checked').length > 0;
             return !$(element).is(':checked') || otherChecked;
        }, 'Market Depth ($20) is only required with a Real Time Exchange.');

******** EDIT ***********Теперь я могу удалить класс, сняв флажок #MKDPT, но, установив флажок в любой из переменных, ошибка не исчезает

$.validator.addMethod(
            'MKDPTOnly',
            function(value, element){
                var ckd = ['AMX1N','BMFNP','BMFNB','CFE1N','CBEXR','CBT1','CBTQL','CME1','CMEQL','CMX1','DCMX1','DMERT','DMEDL','ERX1N','ERXXN','EXC1N','EXD1N','EXR1N','EXI1N','IPE1','KCB1','LME1','DLME1','MPL1','NDQ1N','NDQL2','CEC1','ICEFI','NYM1','DNYM1','NYMQL','NYS1N','NYSLM','PNK1P','PNK2N','SMX1', 'CNC1N','CNS1N','MTL1N','MTL2N','MTN1N','MTN2N','WEA1'];
                if ($('#MKDPT').is(':checked') && $('#' + ckd.join(',#')).filter(':checked').length == 0) {
                    return false;
                } else { return true; }
            },'Market Depth ($20) is only required with a Real Time Exchange.');

1 Ответ

1 голос
/ 08 марта 2011

Я наконец-то смог решить этот, возможно, грубый путь.

Я добавил идентификатор в диапазон, который содержит элемент ошибки "#MDC" это позволило мне настроить таргетинг на "p.error" через его родительский идентификатор "#MDC"

Затем я добавил класс ко всем флажкам в var ckd ".mdh"

В моем файле JS у меня есть $ .validator.addMethod выше, что если отмечен «#MKDPT» и ни один из var ckd не отображает p.error и не добавляет класс «.error» к флажку «#MKDPT» У меня была проблема с удалением p.error и переключением «#MKDPT» с «.error» на «.valid», чтобы вы могли продолжить работу с формой.

Я решил это так:

$(".mdh").live('click', function(){
            if ($(".ex").is(":checked")) {                           
                $("#MKDPT").removeClass("error").addClass("valid");
                $("#MDC > p.error").hide();
                $("#MDerror").hide();
            } else {
                $("#MKDPT").removeClass("valid").addClass("error");
                $("#MDC > p.error").show();
                $("#MDerror").show();
            }
        });

так что теперь, если "#MDKPT" имеет класс ".error" и отображается p.error, когда вы устанавливаете флажок с классом ".mdh", он удаляет класс ".error" добавляет класс ". valid "скрывает" p.error "и позволяет продолжить. если вы снимите галочку или не отметите ни один из «.mdh», он отобразит ошибку, добавит класс «.error» и остановит прохождение через форму. работает хорошо, хотя я уверен, что у кого-то умнее есть лучшее решение.

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