如何为Magento原型添加自定义验证

时间:2013-02-22 15:32:40

标签: magento prototypejs

我想为一些自定义字段创建一个简单的url验证器。我尝试了默认的(将类validate-urlvalidate-clean-url添加到输入中) - 但这些不能像我希望的那样工作,所以我想写一些自己的javascript,但与原型验证相结合。

有没有人有任何想法我怎么能这样做?

我在搜索中找不到任何有用的东西,而且我不是非常原型(主要使用jQuery)。

2 个答案:

答案 0 :(得分:21)

您可以使用

创建自己的自定义验证功能
<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

答案 1 :(得分:4)

在/js/prototype/validation.js(或者你有这种事情的文件)。你有一个包含数组的部分:

classname:失败时的消息:function(v){your check return 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)
        }],

编辑:R.S通过显示如何在不更改js文件的情况下做出更好的回答。更方便;)