form.js 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194
  1. Namespace.register("com.hotent.form");
  2. /**
  3. * 动态创建form类。
  4. * 使用方法如下:
  5. * var frm=new com.hotent.form.Form();
  6. * frm.creatForm("表单名","提交到的页面");
  7. *清除表单元素
  8. * frm.clearFormEl();
  9. * 添加需要提交的表单元素。
  10. * frm.addFormEl("name","value");
  11. * 表单提交
  12. * frm.submit();
  13. */
  14. com.hotent.form.Form=function(){
  15. this.creatForm=function(formName,action)
  16. {
  17. var frm=document.getElementById(formName);
  18. if(frm==null || frm==undefined){
  19. frm = document.createElement("FORM");
  20. document.body.appendChild(frm);
  21. }
  22. //frm.action=action;
  23. this.form=frm;
  24. this.form.method="post";
  25. this.parseAction(action);
  26. };
  27. this.parseAction=function( _action_){
  28. var idx=_action_.indexOf("?");
  29. if(idx==-1){
  30. this.form.action=_action_;
  31. }
  32. else{
  33. var aryStr=_action_.split("?");
  34. var action=aryStr[0];
  35. this.form.action=action;
  36. var queryString=aryStr[1];
  37. var aryQ=queryString.split("&");
  38. for(var i=0;i<aryQ.length;i++){
  39. var pv=aryQ[i].split("=");
  40. this.addFormEl(pv[0],pv[1]);
  41. }
  42. }
  43. }
  44. /**
  45. * 设置方法
  46. * 值:get,post
  47. */
  48. this.setMethod=function(_method){
  49. this.form.method=_method;
  50. };
  51. this.setTarget=function(_target){
  52. this.form.target=_target;
  53. };
  54. this.clearFormEl=function()
  55. {
  56. var childs=this.form.childNodes;
  57. for(var i=childs.length-1;i>=0;i--){
  58. var node=childs[i];
  59. this.form.removeNode(node);
  60. }
  61. };
  62. /**
  63. * 添加字段
  64. */
  65. this.addFormEl=function(name,value){
  66. var el = document.createElement("input");
  67. el.setAttribute("name",name);
  68. el.setAttribute("type","hidden");
  69. el.setAttribute("value",value);
  70. this.form.appendChild(el);
  71. };
  72. this.submit=function(){
  73. this.form.submit();
  74. };
  75. };
  76. var FormSubmitUtil={
  77. getFormData:function(){
  78. var json = {};
  79. $("input:text[include],input:hidden[include],textarea[include],select[include]").each(function() {
  80. var name = $(this).attr('name');
  81. var value=$(this).val();
  82. if(json[name]){
  83. json[name]+=","+value;
  84. }else{
  85. json[name]=value;
  86. }
  87. });
  88. //设置radio。
  89. var operatorObj = $('input[include]:radio');
  90. FormSubmitUtil.setRadioData(json, operatorObj);
  91. //遍历checkbox
  92. operatorObj = $('input[include]:checkbox');
  93. var checkedObj = $('input[include]:checkbox:checked');
  94. FormSubmitUtil.setCheckBoxData(json,operatorObj,checkedObj);
  95. return json;
  96. },
  97. /**
  98. * form :表单form
  99. * 把表单以ajax的方式提交上去,
  100. * callback是成功时的回调函数
  101. * handData : 在提交之前处理表单json数据。
  102. */
  103. submitFormAjax : function(form,callback,handFormJson){
  104. var formObj=$(form);
  105. var url = $(form).attr("action");
  106. var json =FormSubmitUtil. getFormData();
  107. //在提交之前对数据进行处理。
  108. if(handFormJson){
  109. handFormJson(json);
  110. }
  111. $.post(url,json,function(data){
  112. callback(data);
  113. });
  114. },
  115. setRadioData:function(dataObj, operatorObj){
  116. $(operatorObj).each(function() {
  117. var name = $(this).attr('name');
  118. var value= $(this).val();
  119. if($(this).attr("checked")!=undefined){
  120. dataObj[name]=value;
  121. }
  122. });
  123. },
  124. setCheckBoxData:function(dataObj, operatorObj, checkedObj){
  125. //将所有复选框选址清空。
  126. $(operatorObj).each(function() {
  127. var name = $(this).attr('name');
  128. dataObj[name]="";
  129. });
  130. //复选框取值。
  131. $(checkedObj).each(function() {
  132. var name = $(this).attr('name');
  133. var value= $(this).val();
  134. if(dataObj[name]==""){
  135. dataObj[name]=value;
  136. } else{
  137. dataObj[name]+="," + value;
  138. }
  139. });
  140. },
  141. /**
  142. * 清除表单某个范围内的全部提交信息。
  143. * 也就是把scope内的input select textarea的name都制空
  144. */
  145. clearSubmitElement:function(scope){
  146. $(scope).find("input[name],select[name],textarea[name]").each(function(){
  147. $(this).attr("name","");
  148. });
  149. }
  150. }
  151. /**
  152. * ResponseObject对象
  153. * @param data
  154. */
  155. com.hotent.form.ResultMessage = function(data) {
  156. {
  157. this.data = eval('(' + data + ')');
  158. }
  159. /**
  160. * 操作是否成功
  161. * @returns {Boolean}
  162. */
  163. this.isSuccess = function() {
  164. return this.data['result'] == 1;
  165. };
  166. /**
  167. * 获取响应信息
  168. * @returns
  169. */
  170. this.getMessage = function() {
  171. return this.data['message'];
  172. };
  173. };