9

Less thanjQuery のバリデーターを作成しようとしています。

あるテキスト ボックスを別のテキスト ボックスと比較したいので、次のようにします。

<input type="text" id="value1" /> <input type="text" id="value2" />

私は私のvalidatorようになりたい

$('#myForm').validate({rules: { value1: { lessThan: "#value2" } } });

私はこれを試しましたが、動作させることができません:

$.validator.addMethod('lessThan', function(value, element, param) {
    var i = parseInt(value);
    var j = parseInt($(param).val());
    return i >= j;
}, "Less Than");

もう 1 つの質問は、そのコードをどこに置くべきかということです。タグ$(document).ready内または<script>タグ内だけですか?

4

5 に答える 5

2

実際に独自のバリデーターメソッドを書かなくてもできると思います。

$('#myForm').validate({
    rules: {
         value1: {
             maxlength: $('#value2').val().length
         }
    }
});

$('#value2').change(function() {
    $('#value1').rules('remove', 'maxlength').rules('add', {
         maxlength: $('#value2').val().length
    });
});

またはコードの重複がなければさらに良い

function getRule() {
    return {
        maxlength: $('#value2').val().length
    };
}

$('#myForm').validate({
    rules: {
         value1: getRule()
    }
});

$('#value2').change(function() {
    $('#value1').rules('remove', 'maxlength').rules('add', getRule());
});
于 2009-08-11T15:21:24.393 に答える
1

以下に示すように、任意のドキュメント準備完了ブロック内に検証メソッドを挿入できます。

$().ready(function() {

    $.validator.addMethod("lessThan",
        function(value, element, param) {
            var i = parseFloat(value);
            var j = parseFloat(param);
            return (i < j) ? true : false;
        }
    );

});

変更できるように、これを単純に保つようにしました。メソッドが「lessThan」と呼ばれる場合は、それを行う必要があります。メソッドが実際に「以下」を実行する場合は、より適切な名前を検討してください。

parseFloat も使用しているため、parseInt よりも柔軟にメソッドを使用できることに注意してください。

バリデータ内から、正しく使用していました。たとえば、10 未満の検証の場合:

$('#myForm').validate({ rules: { value1: { lessThan: "10"}} });

幸運を!

于 2009-08-11T15:37:36.280 に答える