/**
* jQuery EasyUI 1.3.6
*
* Copyright (c) 2009-2014 www.jeasyui.com. All rights reserved.
*
* Licensed under the GPL license: http://www.gnu.org/licenses/gpl.txt
* To use it on other terms please contact us at info@jeasyui.com
*
*/
/**
* form - jQuery EasyUI
*
*/
(function($){
/**
* submit the form
*/
function ajaxSubmit(target, options){
options = options || {};
var param = {};
if (options.onSubmit){
if (options.onSubmit.call(target, param) == false) {
return;
}
}
var form = $(target);
if (options.url){
form.attr('action', options.url);
}
var frameId = 'easyui_frame_' + (new Date().getTime());
var frame = $('')
.attr('src', window.ActiveXObject ? 'javascript:false' : 'about:blank')
.css({
position:'absolute',
top:-1000,
left:-1000
});
var t = form.attr('target'), a = form.attr('action');
form.attr('target', frameId);
var paramFields = $();
try {
frame.appendTo('body');
frame.bind('load', cb);
for(var n in param){
var f = $('').val(param[n]).appendTo(form);
paramFields = paramFields.add(f);
}
checkState();
form[0].submit();
} finally {
form.attr('action', a);
t ? form.attr('target', t) : form.removeAttr('target');
paramFields.remove();
}
function checkState(){
var f = $('#'+frameId);
if (!f.length){return}
try{
var s = f.contents()[0].readyState;
if (s && s.toLowerCase() == 'uninitialized'){
setTimeout(checkState, 100);
}
} catch(e){
cb();
}
}
var checkCount = 10;
function cb(){
var frame = $('#'+frameId);
if (!frame.length){return}
frame.unbind();
var data = '';
try{
var body = frame.contents().find('body');
data = body.html();
if (data == ''){
if (--checkCount){
setTimeout(cb, 100);
return;
}
// return;
}
var ta = body.find('>textarea');
if (ta.length){
data = ta.val();
} else {
var pre = body.find('>pre');
if (pre.length){
data = pre.html();
}
}
} catch(e){
}
if (options.success){
options.success(data);
}
setTimeout(function(){
frame.unbind();
frame.remove();
}, 100);
}
}
/**
* load form data
* if data is a URL string type load from remote site,
* otherwise load from local data object.
*/
function load(target, data){
if (!$.data(target, 'form')){
$.data(target, 'form', {
options: $.extend({}, $.fn.form.defaults)
});
}
var opts = $.data(target, 'form').options;
if (typeof data == 'string'){
var param = {};
if (opts.onBeforeLoad.call(target, param) == false) return;
$.ajax({
url: data,
data: param,
dataType: 'json',
success: function(data){
_load(data);
},
error: function(){
opts.onLoadError.apply(target, arguments);
}
});
} else {
_load(data);
}
function _load(data){
var form = $(target);
for(var name in data){
var val = data[name];
var rr = _checkField(name, val);
if (!rr.length){
// var f = form.find('input[numberboxName="'+name+'"]');
// if (f.length){
// f.numberbox('setValue', val); // set numberbox value
// } else {
// $('input[name="'+name+'"]', form).val(val);
// $('textarea[name="'+name+'"]', form).val(val);
// $('select[name="'+name+'"]', form).val(val);
// }
var count = _loadOther(name, val);
if (!count){
$('input[name="'+name+'"]', form).val(val);
$('textarea[name="'+name+'"]', form).val(val);
$('select[name="'+name+'"]', form).val(val);
}
}
_loadCombo(name, val);
}
opts.onLoadSuccess.call(target, data);
validate(target);
}
/**
* check the checkbox and radio fields
*/
function _checkField(name, val){
var rr = $(target).find('input[name="'+name+'"][type=radio], input[name="'+name+'"][type=checkbox]');
rr._propAttr('checked', false);
rr.each(function(){
var f = $(this);
if (f.val() == String(val) || $.inArray(f.val(), $.isArray(val)?val:[val]) >= 0){
f._propAttr('checked', true);
}
});
return rr;
}
function _loadOther(name, val){
var count = 0;
var pp = ['numberbox','slider'];
for(var i=0; i