wh8766
11/5/2012 - 9:10 AM

SGIS.AutoForm

SGIS.AutoForm

SGIS.registerNamespace("SGIS.AutoForm");

(function(){
	var Validator = {
		notnull : function(v, args){
			return v != "";
		},
		number : function(v, args){
			return !isNaN(v);
		}
	}
	var testV = function(){
		var $this = $(this), vs = $this.attr("data-validation").split(","), result = true;
		for (var i = 0, _sizei = vs.length; i < _sizei; i++) {
			var keys = vs[i].split("|");
			result = Validator[keys[0]] ? Validator[keys[0]].call(this, $this.val(), keys[1]) : true;
			if (!result) {break;};
		}
		
		$this.parentsUntil(".control-group").parent().toggleClass("error", !result);
		return result;
	};
	/**
	 * 表单
	 * 提供填充数据的方法
	 * 提供提交表单的方法
	 * @param {Element} content
	 * @param {Object} options
	 */
	SGIS.AutoForm = function(content, options) {
		this.options = options
		this.$element = $(content)
		this.$element.delegate(":input[data-validation]", "blur", testV)
	//		.delegate('[data-dismiss="modal"]', 'click.form.submit', $.proxy(this.submit, this))
	};
	SGIS.AutoForm.prototype = {
		/**
		 * 验证表单
		 * @return Boolean
		 */
		validation : function(){
			var re = true;
			this.$element.find("input[data-validation]").each(function(){
				if (!testV.call(this)){
					re = false;
				}
			});
			return re;
		},
		/**
		 * 提交表单
		 * @param {String} url
		 * @param {Function} callback
		 */
		submit : function(url ,callback){
			if (this.validation()){
				var ps = this.$element.serializeArray(), o = {};
				for (var i = 0, _sizei = ps.length; i < _sizei; i++) {
					o[ps[i].name] = ps[i].value;
				}
				$.post(url, o, function (re){
					callback && callback.call(this, re);
				}, "text");
			}
		},
		reset : function(){
	//		this.$element.rese
		},
		setInitValue : function(data){
			for (var key in data) {
				this.$element.find("[name='"+key+"']").val(data[key]);
			}
		}
	};
})();