-2

オブジェクトとしていくつかのオプションを jQuery プラグインに渡したいです。これは私がそれを行う方法です:

$("#contact-form").formValidate({
    contactname: {
        "minLength": 5
    },
    contactemail : {
        "minLength": 4
    },
    contactsubject : {
        "minLength": 10
    },
    contactmessage : {
        "minLength": 25
    }
});

私の関数では、フォーム フィールドの入力 ID である文字列でオブジェクトを参照したいと考えています。

$.fn.formValidate = function(options) {
        //...
        var $this = $(this);
        var id = $this.attr("id");
        var length = options.id.minLength;
       //...
}

この解決策は機能しません。

//編集

(function($, window, document, undefined ) {
    $.fn.formValidate = function(options) {
        /*
         * Deafults values for form validation.
         */
        var defaults = {
            minLength: 5,
            type : "text",
            required : true
        };

        var methods = {
            error : function(id) {
                $(id).css("border", "1px solid red");
            }
        }
        var settings = $.extend({}, defaults, options);
        console.log(options);

        this.children().each(function() {
            var $this = $(this);
            var tagName = $this[0].nodeName;
            var inputType = $(this).attr("type");
            var id = $this.attr("id");
            console.log(id);
            var property = options[id].minLength;

            if (tagName == "INPUT") {
                console.log("property: " + property);
                console.log("--------------------------");
                $(this).keyup(function() {
                    if ($this.val().length > 0) {
                        $this.css("border", "1px solid red");
                    } else {
                        $this.css("border", "1px solid #ccc");
                    }
                });
            } 
        });
        return this;
    };
}(jQuery));
4

1 に答える 1

6

JavaScript オブジェクトは、連想配列としても機能します。

このフォームoptions.id.minlengthは、名前が文字列リテラル「id」であるプロパティにアクセスします。

代わりに、options[id].minlength名前が variable の値であるプロパティにアクセスするフォームが必要ですid


さらに、idあなたが思っているほどの価値がないかもしれません。#contact-form$thisの参照のように見えるため、値は「contact-form」になります。フォーム内の要素のコレクションにアクセスしたい場合は、次のようなものを試してください。id$this.find('input,textarea,select')

于 2013-03-24T17:19:00.200 に答える