最近在思考優化項目,想自己擴展一個jquery自動獲取表單中的數據進行ajax提交。本人沒有完整性學習jquery,基本上是現學現找,有點困難。
主要是擴展和拼接json轉對象
很簡單,附上代碼:
; (function ($) {
$.fn.ajaxForm = function (options) {
var defaults = {
modelname: 'model',//后台對象接收名稱
url: '/',//提交地址
postType: 'POST',//提交方式
dataType: 'JSON',//數據返回類型
async: false,//是否異步
optionObj: [],//自定義參數
callback: function () { },//成功回調
};
var options = $.extend(defaults, options);//合並參數
if (options.url == '') {
alert('請填寫提交地址');
return;
}
var postvals = {};
//textbox/隱藏域/textarea/radio選中值
$(this).find('input[type="text"],input[type="hidden"],textarea,input[type="radio"]:checked').each(function () {
if ($(this).val() != undefined) {
var name = $(this).attr('name');
if (name == undefined || name == '') {
return false;
}
var value = $(this).val();
var json = '{"' + name + '":"' + value + '"}';
var obj = $.parseJSON(json);
postvals = $.extend(postvals, obj);
}
});
var resObj;
if (options.optionObj != undefined || options.optionObj!=[]) {
resObj = $.extend(postvals,options.optionObj);
} else {
resObj = postvals;
}
$.ajax({
type: options.postType,
dataType: options.dataType,
data: resObj,
async: options.async,
url: options.url,
success: function (json) {
if (json.IsError) {
alert(json.Message);
} else {
options.callback();
}
}
});
};
})(jQuery);
使用的話配合jquery validate使用
$("#system-form").validate({
rules: {
SystemName: {
required: true
},
Description: {
required: true,
},
},
messages: {
SystemName: {
required: "請填寫系統名稱"
},
Description: {
required: "請填寫系統描述"
}
},
submitHandler: function(form) {
var url = '/oa/system/' + $(form).attr('ftype');
$(form).ajaxForm({ url: url,modelname:'system', callback: function() {
location.href = '/oa/system/index.html';
} });
}
});
代碼可能有些問題,有時間看看
