Wednesday, October 29, 2008

[jQuery] Re: Validate Plugin - Multiple Requirements? [validate]

No, I'm proposing to write your own custom method, using
$.validator.addMethod. Custom methods allow you to extend the
validation with your application specific requirements.

Jörn

On Wed, Oct 29, 2008 at 12:38 AM, Validatorian <validatorian@phazm.com> wrote:
>
> Maybe I misunderstood you, but it seems like you're referring to "age-
> method" as if it already exists? Or are you saying to use "math" and
> do it that way?
>
> On Oct 28, 4:00 pm, "Jörn Zaefferer" <joern.zaeffe...@googlemail.com>
> wrote:
>> Adding the parent-age-check is just another method. In this case, I'd
>> add a custom age-method
>> (http://docs.jquery.com/Plugins/Validation/Validator/addMethod), and
>> use that together with date and required.
>>
>> Jörn
>>
>> On Tue, Oct 28, 2008 at 11:49 PM, Validatorian <validator...@phazm.com> wrote:
>>
>> > For what it's worth, if you can think of a better (read: cleaner) way
>> > to do what I'm currently doing, please let me know :)
>>
>> > On Oct 28, 11:26 am, Validatorian <validator...@phazm.com> wrote:
>> >> I'm doing something similar to this example:http://docs.jquery.com/Plugins/Validation/Methods/required#dependency...
>>
>> >> I have a date input field, and if you are under 13, it pops up another
>> >> field for parent's age.But unlike this example,I want the parent to be
>> >> required to be 18 or older.How would I set it up to require the input,
>> >> and require it to be over a certain age.
>>
>> >> It 's also important to note that the inputs are dates, not ages, so I
>> >> can't just do "min:18" because it 's more like "Tue Aug 29 2023
>> >> 11:18:38 GMT-0700 (Pacific Daylight Time)"
>>
>> >> If needed, here's what I am currently doing:
>>
>> >> function checkAge(parent) {
>> >> var min_age = 13;
>>
>> >> if (parent) {
>> >> var dateArray = parent.split('/');
>> >> min_age = 18;
>> >> } else {
>> >> var dateArray = $('#dateOfBirth').val().split('/');
>> >> }
>> >> var year = dateArray[2];
>> >> var month = dateArray[0] - 1;
>> >> var day = dateArray[1];
>>
>> >> var theirDate = new Date();
>> >> theirDate.setFullYear((parseInt(year) + min_age), month, day);
>> >> console.log(theirDate);
>> >> var today = new Date();
>> >> console.log(today);
>> >> console.log(today - theirDate);
>>
>> >> if (today < theirDate) {
>> >> $('#parentsRequired').show();
>> >> return true;
>> >> } else {
>> >> $('#parentsRequired').hide();
>> >> return false;
>> >> }
>>
>> >> }
>>
>> >> ....
>>
>> >> dateOfBirth: {
>> >> required: function(element) {
>> >> var check = checkAge();
>> >> return true;
>> >> },
>> >> date: true},
>>
>> >> parentsDateOfBirth: {
>> >> required: function(element) {
>> >> return checkAge($(element).val());
>> >> },
>> >> date: true
>>
>> >> },

No comments: