Как добавить пользовательскую проверку в прототип 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. Более удобно;)