0

Hello im using jquery validation plugin to validate my form. I want to add one more rule to the validation, but cant get it to work. Input value should be less or equal previous element value.

It is possible to do it ?

Here is the code -

<input type='text' value='<?php echo $count; ?>' class='input_in_stock' readonly="readonly" />
<input type='text' name='amount[]' id='<?php echo rand(0,99).$id; ?>' size='1' value='<?php echo $count; ?>' class='required input_count' />

$(document).ready(function(){

    $.validator.addMethod('positiveint', function (value) { 
        return (value > 0) && (value != 0) && (value == parseInt(value, 10));
    }, 'Enter a positive integer value.');

    $.validator.addMethod('notmorethan', function (value) { 
        return (value <= $(this).prev().val());
    }, 'abc.');




    $("#cartform").validate({
        rules: {
            "amount[]": {
                required: true,
                positiveint: true,
                notmorethan: true
            }
        },
        errorPlacement: function(error, element) {
            error.appendTo(element.next());
        }
    });

});

p.s. I used this jquery validation plugin fix to make it work with names like this[] http://www.codeboss.in/web-funda/2009/05/27/jquery-validation-for-array-of-input-elements

EDIT: found the solution

$.validator.addMethod('notmorethan', function (value, element) { 
    return (value <= $(element).prev().val() );
}, 'abc');
4

2 回答 2

1

看看这个小提琴是否有帮助 - http://jsfiddle.net/alokswain/LSuMA/11/。我不确定您使用诸如 之类的名称进行的自定义amount[],但我想这种方法应该很有效。

自定义验证方法只是函数,如果您this在函数体内使用,那么它将引用函数的所有者。现在假设您想从输入字段中获取先前有效的值,只要整个表单有效,您就可以将其存储在 DOM 中的某个位置,例如先前存储的值被称为previousAmountVal. 当字段中的值发生变化时,在函数中,notmorethan您可以使用参数访问当前值,使用 访问value先前存储的值和先前值previousAmountVal,从而确定当前值是否有效。此外,如果您这样做,请记住始终更新previousAmountVal表单何时有效。

于 2012-04-30T12:13:05.630 回答
0

找到了解决方案

$.validator.addMethod('notmorethan', function (value, element) { 
    return (value <= $(element).prev().val() );
}, 'abc');
于 2012-05-01T08:38:04.717 回答