I am using the jQuery validate plugin which is awesome for straightforward form validation. What i especially like is that it offers the user a better user experience, because there is no need for the round-trip to the server. I still need to do the validation on the server-side (rails) as well. I guess there should be a way to extract the validations from the model into the view transparently, but for now i just add a class "required"
myself. Now i did bump into a seemingly difficult problem, when the user wanted my to validate to having either one of both fields filled in. Luckily google came up with a beautiful answer quick enough! I needed to adapt it somewhat, because my form-styling places each label-field combination inside a div, so i search for the second surrounding 'div' (containing the group of fields for which only one field is required). [javascript] jQuery.validator.addMethod('required_group', function(val, el) { var $module = $j(el).parent('div').parent('div'); return $module.find('.required_group:filled').length; }, 'Please fill out at least one of these fields'); [/javascript] How i love the jQuery and Rails community. Awesome!
Comments
thanks a lot for post this. I was stuck on that myself. ;) Cheers, Márcio
thanks for the post..its working good for me..but how to clear the validations on other fields once we enter some text in one field..the validation is clearing on only the field which we enter some text...thanks again....
I didnt understand it. Can you please explain in more details where to add this method/code. Thanks
Hi James, depends how you organise your javascript. If you have no javascript organisation yet, place it in your application.js, in a document ready function. But you could also place in a page-specific piece of javascript, that is only loaded on that page with that form. Does that help?
Hi, I would like to see an example, because I spent long time to validate either ip address : I have two text fields in a search form, the user can search by ip1 or by ip2 or by both, I want only the ip address filled to be validated and skip the other one if left empty, I did this but it's still not working : http://jsbin.com/AcENopog/2/edit Thanks, your help is appreciated.
Hi Akram, please ask this question on stackoverflow.com : a lot more people will be able to help you there with that problem. Good luck!
Add comment