JQuery Validator и необязательные поля с использованием Regex - PullRequest
1 голос
/ 06 октября 2011

У меня есть необязательное поле (скажем, «text1»), которое может быть либо пустым, либо только буквенно-цифровым:

jQuery.validator.addMethod("onlyAlphaNumeric", 
        function(value, element) {  
            var regExp = new RegExp(/^[a-zA-Z0-9]+$/);              
            return ((this.optional(element)) || regExp.test(value));
        }
    , "Only aplaha-numeric characters allowed");


$("#student-search-form").validate({
    rules : {
        text1 : {
            optional : true,
            onlyAlphaNumeric: "Only a-n allowed"
        }
    },
    messages: {
        text : {                    
            acceptOnly: " Only alpha-numeric characters allowed"
        }               
    }
});

Проблема в том, что проверка не происходит, поэтому, если пользователь вводит "! & ^% (*" В "text1", форма отправляется, без ошибок.

Может кто-нибудь сказать мне, что я делаю не так? Спасибо.

Ответы [ 3 ]

2 голосов
/ 06 октября 2011

Это неправильно ...

rules : {
    text1 : {
        optional : true,
        onlyAlphaNumeric: "Only a-n allowed"
    }
},

Для onlyAlphaNumeric: вы можете поставить только true или false.

Я не слишком уверен насчет optional:, но знаю, что required: действителен ... поэтому установите required: на false. В качестве альтернативы, вы могли бы, вероятно, не указывать это полностью, поскольку валидатор по умолчанию использует поля как «необязательные» (required:false), если не указано иное.

rules : {
    text1 : {
        required : false,
        onlyAlphaNumeric: true
    }
},

Смотрите этот похожий ответ ...

с помощью плагина проверки jquery, как я могу добавить проверку регулярного выражения в текстовое поле?

0 голосов
/ 06 октября 2011

Я думаю, что ваш код должен выглядеть примерно так:

// Suppose that your method is well defined
jQuery.validator.addMethod("onlyAlphaNumeric", 
    function(value, element) {  
        var regExp = new RegExp(/^[a-zA-Z0-9]+$/);              
        return ((this.optional(element)) || regExp.test(value));
    }
, "Only alpha-numeric characters allowed");

$("#student-search-form").validate({
    rules : {
        text1 : {
        required : false, // optional must be replaced by required
        onlyAlphaNumeric: true // rules are boolean
        }
    },
    messages: {
        text1 : {
            onlyAlphaNumeric: "I can change my message : Only alpha-numeric characters allowed"
        }
    }
});
0 голосов
/ 06 октября 2011

вы можете добавить опционально к методу валидации -

http://ajax.microsoft.com/ajax/jquery.validate/1.7/additional-methods.js

jQuery.validator.addMethod("alphanumeric", function(value, element) {
    return this.optional(element) || /^\w+$/i.test(value);
}, "Letters, numbers, spaces or underscores only please");

Подтвердить -

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