/** * 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