11155
(-- --)
January 31, 2010, 7:48pm
1
I have a list of fields in a form that need to be validated against a
database.
I would prefer to have the validation occur every time the field loses
focus (onblur event) rather than when the user does a submit.
Does anyone know of an RoR example of how to do that?
Steve_Ross
(Steve Ross)
January 31, 2010, 7:53pm
2
11155
(-- --)
January 31, 2010, 9:04pm
4
Ralph Shnelvar wrote:
I have a list of fields in a form that need to be validated against a
database.
I would prefer to have the validation occur every time the field loses
focus (onblur event) rather than when the user does a submit.
Does anyone know of an RoR example of how to do that?
Remember not to rely on client-side validation. It's very useful, but
it's easy to turn off JS and bypass it.
Best,
11155
(-- --)
January 31, 2010, 9:06pm
6
Ralph Shnelvar wrote:
Steve Ross wrote:
I have a list of fields in a form that need to be validated against a
database.
I would prefer to have the validation occur every time the field loses
focus (onblur event) rather than when the user does a submit.
Does anyone know of an RoR example of how to do that?
jQuery validate?
http://docs.jquery.com/Plugins/Validation
I think the jQuery validate function I want is "remote".
Is there any way for that function to call a RoR action in a model or
controller rather than more php or javascript?
If you can call PHP, you can call Rails. The client-side JS knows
nothing about the server-side scripting language.
Best,
Steve_Ross
(Steve Ross)
January 31, 2010, 9:40pm
7
It's easy. I don't have any code close at hand, but it's pretty straightforward -- stick the validation URL in an attribute you can access then use that. Just remember to have your authenticity certificate as part of the post data so Rails doesn't suspect a forgery.
Marnen's right, you shouldn't rely completely on client-side validation, but I typically do as much validation as possible on the client to avoid beating up the server and/or spoiling the client experience, then validate everything completely on the server to prevent attacks or mis-entries on the part of people who have disabled js.
Steve_Ross
(Steve Ross)
January 31, 2010, 10:01pm
8
Here's some old code I pulled off the shelf...uses jq validate
var validator = $("#new_user ").validate({
rules: {
"user[login]": {
required: true,
minlength: 3,
remote: "/users/login_taken"
}
}
});
Pardon the abysmal formatting.