Как добавить пользовательскую проверку в прототип Magento

Я хочу сделать простой валидатор URL для некоторых пользовательских полей. Я попробовал по умолчанию (добавив class validate-url или validate-clean-url к входу) - но они не работают так, как я хотел бы, поэтому я хочу написать некоторые из моих собственных javascript, но интегрированных с проверкой прототипа.

у кого-нибудь есть идеи как я могу это сделать?

Я не нашел ничего полезного в своих поисках, и я не очень прототип-savy (работал в основном с jQuery).

2 ответов


вы можете создать свою собственную функцию проверки с помощью

<script type="text/javascript">
    var theForm = new VarienForm('theForm', true);
    Validation.add('validate-must-be-baz','You failed to enter baz!',function(the_field_value){
        if(the_field_value == 'baz')
        {
            return true;
        }
        return false;
    });

</script>

см http://magento-quickies.tumblr.com/post/6579512188/magento-custom-form-validation

или

if(Validation) {       
   Validation.addAllThese([     
    [
        'validation-myown',      
        'Please insert proper word',   
        function(v,r){ return v.indexOf('valid')==-1?false:true } 
    ],
   [ ]   
])
}

см.http://blog.baobaz.com/en/blog/custom-javascript-form-validators


In/js/prototype / validation.js (или файлы для такого рода вещей, которые у вас есть). У вас есть раздел с массивом :

classname: message on fail : function (v){ваша проверка возвращает true/false;} чтобы проверить, является ли V допустимым или нет

этот раздел находится вокруг строки 420.

вы можете добавить свою проверку в этот массив или изменить validate-url вот как это выглядит:

 ['validate-url', 'Please enter a valid URL. Protocol is required (http://, https:// or ftp://)', function (v) {
            v = (v || '').replace(/^\s+/, '').replace(/\s+$/, '');
            return Validation.get('IsEmpty').test(v) || /^(http|https|ftp):\/\/(([A-Z0-9]([A-Z0-9_-]*[A-Z0-9]|))(\.[A-Z0-9]([A-Z0-9_-]*[A-Z0-9]|))*)(:(\d+))?(\/[A-Z0-9~](([A-Z0-9_~-]|\.)*[A-Z0-9~]|))*\/?(.*)?$/i.test(v)
        }],

Edit : R. S ответил, возможно, лучше, показав, как обойтись без изменение файла js. Более удобно;)