(function($){ $.emailFrame = function(t,p){ p = $.extend({ submitBtn:'.submit', form :null, errMsg :'.err_msg', cancel :'.btn-reset', captcha :false, onSuccess:null, errorDiv:"" }, p); /*DOM ids/classes*/ var v={ initmarker : function(){ var mapObj= new Object; switch (p.type) { default: mapObj=({ draggable:true }); } return mapObj; } }; /*event*/ var e = { initAllEvent : function(){ this.initForm(); this.initErrorDiv(); this.initButton(); f.ClearForm(); }, initErrorDiv: function(){ if (!(p.form.find(p.errMsg).length)) { p.form.prepend(p.errorDiv); } }, initForm : function(){ if (!p.form) p.form=$(t); else p.form=$(p.form); }, initButton :function(){ p.form.find(p.submitBtn).click(function(){ p.form.find(p.errMsg).hide(); var formcontent= f.getForm(); formcontent=formcontent.concat(f.getCheckitem()); f.sendmail(formcontent); return false; }) p.form.find(p.cancel).click(function(){ f.ClearForm(); }) } } /*frame funciton*/ var f = { getForm : function(){ var data=p.form.serializeArray(); if (p.captcha){ data=$.map(data,function(e,i){ switch(e.name){ case 'captcha_code': if (e.value==''){ e.value='......'; } return e; break; default: return e; } }) } //console.log(data); return data; }, getCheckitem : function(){ var concatObj=new Array(); p.form.find("input[check]").each(function(i,e){ var check=new Object(); check.name='check['+i+'][check]'; check.value=$(e).attr('check'); concatObj=concatObj.concat(check); var field=new Object(); field.name='check['+i+'][field]'; field.value=$(e).attr('name'); concatObj=concatObj.concat(field); var err_msg=new Object(); err_msg.name='check['+i+'][err_msg]'; err_msg.value=$(e).attr('err_msg'); concatObj=concatObj.concat(err_msg); var group=new Object(); group.name='check['+i+'][group]'; group.value=$(e).attr('group'); concatObj=concatObj.concat(group); var checkalone=new Object(); checkalone.name='check['+i+'][checkalone]'; checkalone.value=$(e).attr('checkalone'); concatObj=concatObj.concat(checkalone); }); // p.form.find("input[err_msg]").each(function(i,e){ // var check=new Object(); // check.name='err_msg['+$(e).attr('name')+']'; // check.value=$(e).attr('err_msg'); // concatObj=concatObj.concat(check); // }); return concatObj; }, ClearForm : function (){ p.form.find('input[type=text]').val(''); p.form.find('textarea').val(''); p.form.find('input[clear=true]').val(''); p.form.find('.upload_name').html(''); }, sendmail : function(obj){ // var data=[ // { // name:'contact', // check :'require', // err_msg:'請檢查' // }, // { // name:'phone', // check :'name', // err_msg:'請檢查123' // }, // ]; // data=JSON.stringify(obj); $.ajax({ //url : "./ajax/loadDistList.php", url : "./ajax/getSendEmail.php", // data : {d:data}, data : obj, cache : true, dataType : "json", type : "post", success : function(data){ if (data.error) {p.form.find(p.errMsg).html(data.error).show();} else { f.ClearForm(); if (p.onSuccess){p.onSuccess();}} } }) } }; e.initAllEvent(); t.p = p; t.frame = f; t.event = e; return t; } var docloaded = false; $(document).ready(function () {docloaded = true} ); $.fn.emailFrame = function(p) { return this.each( function() {$.emailFrame(this,p);}); }; $.fn.emailFrameGetOptions = function(){ var o = new Object; this.each(function(i,e){ o = e.p; }); return o }; $.fn.emailFrameOptions = function(p) { //function to update general options return this.each( function() { if (this.frame) $.extend(this.p,p); }); }; //end flexOptions $.fn.emailFrameReload = function(p) { // function to reload grid this.each(function(){ if (this.frame) this.frame.reloadmapList(); }); }; })(jQuery)