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