JQuery - Получение пользовательских методов проверки для запуска - PullRequest
4 голосов
/ 18 ноября 2009

Если я добавил в форму собственный метод проверки, как я могу получить его для запуска до отправки?

Я не украшаю поля формы, но думал, что добавление нового метода в мой раздел правил вызовет метод, но он не работает.

$.validator.addMethod('myCustomValidation', function (data)
{
   // do some work here 
   return myValidationResult;

}, 'Please respond.');


$("#myFormId").validate({        
    rules: {
         "myCustomValidation": {required: true}
    },
    messages: {
       "myCustomValidation": {
           required: "Enter some information before proceeding",        
        }
    },
    submitHandler: function(form)
    {
        // do the work to submit this form
    }
});

Я бы хотел, чтобы проверка запускалась при нажатии кнопки «Отправить».

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

Ответы [ 6 ]

1 голос
/ 18 ноября 2009

Я не использовал функцию addMethod, но могу предложить вам следующее:

$.validator.methods.myCustomValidation = function(value, element, param) {
    // Perform custom validation and return true or false
    return value === '' || /^([0-9]{10})$/.test(value);
};


$("#myFormId").validate({        
    rules: {
        myElement: { 
            myCustomValidation: true 
        }
    },
    messages: {
        myElement: { 
            myCustomValidation: "Enter some information before proceeding" 
        }
    },
    submitHandler: function(form)
    {
        // do the work to submit this form
    }
});
0 голосов
/ 20 апреля 2017

Я рекомендую использовать собственный $. Validator.addMethod для привязки пользовательского метода. После этого просто вызовите jquery blur() на element для запуска проверки.

Из-за состояния гонки, которое, как я подозреваю, существует в jQuery Validate, мне пришлось прокрутить ожидание , чтобы избежать получения пустого сообщения об ошибке при программном вызове проверки

            //after binding custom validation method
           if($("#myElement").length){//add any checks you need
                var millisecondsToWait = 500;
                //Spin because it works
                setTimeout(function() {
                    $("#myElement").blur();
                    //$("#myElement").valid();//or this
                }, millisecondsToWait);
0 голосов
/ 16 февраля 2010

Я думаю, что вы ищете addClassRules

$.validator.addMethod('myCustomValidation', function (data)
{
   // do some work here 
   return myValidationResult;

}, 'Please respond.');

$.validator.addClassRules({
  myCustomValidation: { myCustomValidation: true, required: true }
});

$("#myFormId").validate({        
    messages: {
       "myCustomValidation": {
           required: "Enter some information before proceeding",        
        }
    },
    submitHandler: function(form)
    {
        // do the work to submit this form
    }
});
0 голосов
/ 18 ноября 2009

Позвоните .valid(), чтобы запустить проверку:

$("#myFormId").valid();
0 голосов
/ 18 ноября 2009

Вы что-то упустили. правила должны выглядеть следующим образом.

rules: {
    "elemId": {
        required: true,
        myCustomValidation: true
     }
},
0 голосов
/ 18 ноября 2009

оберните ваш код в:

$(function(){
   //your code goes here
});

это прикрепит события проверки при загрузке страницы.

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