2013-02-22 15 views
8

Chcę utworzyć prosty walidator adresów URL dla niektórych pól niestandardowych. Wypróbowałem te domyślne (dodając do wejścia klasę validate-url lub validate-clean-url) - ale te nie działają tak, jak bym chciał, więc chcę napisać trochę mojego własnego javascriptu, ale zintegrowanego z walidacją prototypu.Jak dodać niestandardową weryfikację do prototypu Magento

Czy ktoś ma jakieś pomysły, jak mogę to zrobić?

Nie znalazłem nic przydatnego w moich poszukiwaniach i nie jestem zbyt prototypowy-savy (pracował głównie z jQuery).

Odpowiedz

18

Można utworzyć własną funkcję zwyczaj potwierdzenia przy użyciu

<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> 

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

lub

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

zobaczyć http://blog.baobaz.com/en/blog/custom-javascript-form-validators

4

W /js/prototype/validation.js (lub pliki dla tego rodzaju rzeczy, które masz). Masz sekcję z tablicą:

classname: wiadomość na nie: function (obj) {twój powrót check true/false;}, aby sprawdzić, czy v jest ważne lub nie

Ta sekcja jest wokół linii 420 .

można dodać walidację do tej tablicy lub zmodyfikować validate-url tutaj jest, jak to wygląda:

['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: RS odpowiedziało może lepiej, pokazując, jak to zrobić bez zmiany pliku jS. Wygodniejsze;)

Powiązane problemy