2013-02-22 20 views
8

Voglio fare un semplice validatore di url per alcuni campi personalizzati. Ho provato quelli di default (aggiungendo la classe validate-url o validate-clean-url all'input) - ma questi non funzionano come vorrei, quindi voglio scrivere alcuni dei miei javascript, ma sono integrati con la validazione del prototipo.Come aggiungere una convalida personalizzata al prototipo Magento

Qualcuno ha qualche idea su come posso farlo?

Non ho trovato nulla di utile nelle mie ricerche e non sono molto Prototype-savy (ha funzionato principalmente con jQuery).

risposta

18

È possibile creare la propria funzione di validazione personalizzata utilizzando

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

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

o

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

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

4

In /js/prototype/validation.js (o i file per questo tipo di cose che hai). Lei ha una sezione con una serie di:

nome di classe: messaggio venga meno la funzione (v) {il ritorno di controllo true/false;} per verificare se v è valido o meno

Questa sezione è attorno alla riga 420 .

è possibile aggiungere il convalida a questo array o modificare validate-url qui è quello che sembra:

['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 risposto forse meglio, mostrando come fare senza modificare il file js. Più conveniente;)