common_select.js 6.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196
  1. /* 多级选择相关函数,如地区选择,分类选择
  2. * common_select
  3. */
  4. /* 地区选择函数 */
  5. function regionInit(divId){
  6. var area_id = 0;
  7. getArea(function(){
  8. if(typeof(nc_a[area_id]) == 'object' && nc_a[area_id].length > 0){//数组存在
  9. var area_select = $("#" + divId + " > select");//选择要初始化的对象
  10. areaInit(area_select,area_id);
  11. }
  12. $("#" + divId + " > select").change(regionChange); // select的onchange事件
  13. $("#" + divId + " > input:button[class='edit_region']").click(regionEdit); // 编辑按钮的onclick事件
  14. });
  15. }
  16. function areaInit(area_select,area_id){//初始化地区
  17. getArea(function(){
  18. if(typeof(area_select) == 'object' && nc_a[area_id].length > 0){
  19. var areas = new Array();
  20. areas = nc_a[area_id];
  21. $(area_select).append("<option>-请选择-</option>");
  22. for (i = 0; i <areas.length; i++){
  23. $(area_select).append("<option value='" + areas[i][0] + "'>" + areas[i][1] + "</option>");
  24. }
  25. }
  26. });
  27. }
  28. if(typeof(regionChange) != 'function'){//检测是否已经被定义过,防止重写
  29. function regionChange(){
  30. // 删除后面的select
  31. $(this).nextAll("select").remove();
  32. // 计算当前选中到id和拼起来的name
  33. var selects = $(this).siblings("select").andSelf();
  34. var id = '';
  35. var names = new Array();
  36. for (i = 0; i < selects.length; i++){
  37. sel = selects[i];
  38. if (sel.value > 0){
  39. id = sel.value;
  40. name = sel.options[sel.selectedIndex].text;
  41. names.push(name);
  42. }
  43. }
  44. $(".area_ids").val(id);
  45. $(".area_name").val(name);
  46. $(".area_names").val(names.join("\t"));
  47. if (this.value > 0){//下级地区
  48. var area_id = this.value;
  49. if(typeof(nc_a[area_id]) == 'object' && nc_a[area_id].length > 0){//数组存在
  50. $("<select></select>").change(regionChange).insertAfter(this);
  51. areaInit($(this).next("select"),area_id);//初始化地区
  52. }
  53. }
  54. }
  55. }
  56. function regionEdit()
  57. {
  58. $(this).siblings("select").show();
  59. $(this).siblings("span").andSelf().hide();
  60. }
  61. /* 商品分类选择函数 */
  62. function gcategoryInit(divId)
  63. {
  64. $("#" + divId + " > select").get(0).onchange = gcategoryChange; // select的onchange事件
  65. window.onerror = function(){return true;}; //屏蔽jquery报错
  66. $("#" + divId + " .edit_gcategory").click(gcategoryEdit); // 编辑按钮的onclick事件
  67. }
  68. function gcategoryChange()
  69. {
  70. // 删除后面的select
  71. $(this).nextAll("select").remove();
  72. // 计算当前选中到id和拼起来的name
  73. var selects = $(this).siblings("select").andSelf();
  74. var id = 0;
  75. var names = new Array();
  76. for (i = 0; i < selects.length; i++)
  77. {
  78. sel = selects[i];
  79. if (sel.value > 0)
  80. {
  81. id = sel.value;
  82. name = sel.options[sel.selectedIndex].text;
  83. names.push(name);
  84. }
  85. }
  86. $(this).parent().find(".mls_id").val(id);
  87. $(this).parent().find(".mls_name").val(name);
  88. $(this).parent().find(".mls_names").val(names.join("\t"));
  89. // ajax请求下级分类
  90. if (this.value > 0)
  91. {
  92. var _self = this;
  93. var url = SITEURL + '/index.php?act=index&op=josn_class&callback=?';
  94. $.getJSON(url, {'gc_id':this.value}, function(data){
  95. if (data)
  96. {
  97. if (data.length > 0)
  98. {
  99. $("<select class='class-select'><option>-请选择-</option></select>").change(gcategoryChange).insertAfter(_self);
  100. var data = data;
  101. for (i = 0; i < data.length; i++)
  102. {
  103. $(_self).next("select").append("<option data-explain='" + data[i].commis_rate + "' value='" + data[i].gc_id + "'>" + data[i].gc_name + "</option>");
  104. }
  105. }
  106. }
  107. });
  108. }
  109. }
  110. function gcategoryEdit()
  111. {
  112. $(this).siblings("select").show();
  113. $(this).siblings("span").andSelf().remove();
  114. }
  115. if(typeof(jQuery.validator.addMethod) == 'function'){//添加自动检测是否是最后一级地区
  116. jQuery.validator.addMethod("checkarea", function(value, element) {
  117. return this.optional(element) || (typeof(nc_a[value]) == 'undefined');//当数组不存在时确定选到最后
  118. }, "请选择所在地区");
  119. }
  120. function getArea(callback){
  121. if(typeof(nc_a) == 'undefined'){//加载地区数据
  122. var area_scripts_src = '';
  123. area_scripts_src = $("script[src*='jquery.js']").attr("src");//取JS目录的地址
  124. area_scripts_src = area_scripts_src.replace('jquery.js', 'area_array.js');
  125. $.getScript(area_scripts_src,function(){
  126. callback();
  127. return true;
  128. });
  129. } else {
  130. callback();
  131. }
  132. }
  133. //显示一级分类下拉框
  134. function show_gc_1(depth,gc_json){
  135. var html = '<select name="search_gc[]" id="search_gc_0" nc_type="search_gc" class="querySelect">';;
  136. html += ('<option value="0">请选择...</option>');
  137. if(gc_json){
  138. for(var i in gc_json){
  139. if(gc_json[i].depth == 1){
  140. html += ('<option value="'+gc_json[i].gc_id+'">'+gc_json[i].gc_name+'</option>');
  141. }
  142. }
  143. }
  144. html += '</select>';
  145. $("#searchgc_td").html(html);
  146. }
  147. //显示子分类下拉框
  148. function show_gc_2(chooseid,gc_json){
  149. if(gc_json && chooseid > 0){
  150. var childid = gc_json[chooseid].child;
  151. if(childid){
  152. var html = '<select name="search_gc[]" id="search_gc_'+gc_json[chooseid].depth+'" nc_type="search_gc" class="querySelect">';;
  153. html += ('<option value="0">请选择...</option>');
  154. var childid_arr = childid.split(",");
  155. if(childid_arr){
  156. for(var i in childid_arr){
  157. html += ('<option value="'+gc_json[childid_arr[i]].gc_id+'">'+gc_json[childid_arr[i]].gc_name+'</option>');
  158. }
  159. }
  160. html += '</select>';
  161. $("#searchgc_td").append(html);
  162. }
  163. }
  164. }
  165. //初始化商品分类select
  166. //chooseid_arr为已选gc_id的json数组
  167. function init_gcselect(chooseid_json,gc_json){
  168. show_gc_1(1,gc_json);
  169. if(chooseid_json){
  170. for(var i in chooseid_json){
  171. show_gc_2(chooseid_json[i],gc_json);
  172. $('#search_gc_'+i).val(chooseid_json[i]);
  173. $('#choose_gcid').val(chooseid_json[i]);
  174. }
  175. }
  176. //商品分类select绑定事件
  177. $("[nc_type='search_gc']").live('change',function(){
  178. $(this).nextAll("[nc_type='search_gc']").remove();
  179. var chooseid = $(this).val();
  180. if(chooseid > 0){
  181. $("#choose_gcid").val(chooseid);
  182. show_gc_2(chooseid,gc_json);
  183. } else {
  184. chooseid = $(this).prev().val();
  185. $("#choose_gcid").val(chooseid);
  186. }
  187. });
  188. }