0

こんにちは、jquery 検証プラグインを使用してフォームを検証しています。検証にルールをもう 1 つ追加したいのですが、うまくいきません。 入力値は前の要素の値以下である必要があります。

それは可能ですか?

ここにコードがあります -

<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());
        }
    });

});

ps このjquery検証プラグインの修正を使用して、次のような名前で機能するようにしました[] http://www.codeboss.in/web-funda/2009/05/27/jquery-validation-for-array-of-input-要素

編集:解決策を見つけました

$.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ます。フィールドの値が変更されると、関数内でparameter を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 に答える