jquery.edit.js 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430
  1. $(document).ready(function() {
  2. var url = window.location.href;
  3. var url = url.replace(/\/index.php/g, "");
  4. var baseurl = BASESITEURL.replace(/index.php/g, "");
  5. var params = url.substr(baseurl.length).split('/');
  6. action = params[0] ? params[1] : params[2];
  7. // var url = window.location.href;
  8. // var params = url.substr(1).split('/index.php/');
  9. // var action = '';
  10. // var param = params[1];
  11. // var arr = param.split('/');
  12. // action = arr[1];
  13. //给需要修改的位置添加修改行为
  14. $('span[ds_type="inline_edit"]').click(function() {
  15. var s_value = $(this).text();
  16. var s_name = $(this).attr('fieldname');
  17. var s_id = $(this).attr('fieldid');
  18. var req = $(this).attr('required');
  19. var type = $(this).attr('datatype');
  20. var max = $(this).attr('maxvalue');
  21. var ajax_branch = $(this).attr('ajax_branch');
  22. $('<input type="text">')
  23. .attr({value: s_value})
  24. .insertAfter($(this))
  25. .focus()
  26. .select()
  27. .keyup(function(event) {
  28. if (event.keyCode == 13)
  29. {
  30. if (req)
  31. {
  32. if (!required($(this).prop('value'), s_value, $(this)))
  33. {
  34. return;
  35. }
  36. }
  37. if (type)
  38. {
  39. if (!check_type(type, $(this).prop('value'), s_value, $(this)))
  40. {
  41. return;
  42. }
  43. }
  44. if (max)
  45. {
  46. if (!check_max($(this).prop('value'), s_value, max, $(this)))
  47. {
  48. return;
  49. }
  50. }
  51. $(this).prev('span').show().text($(this).prop("value"));
  52. //branch ajax 分支
  53. //id 修改内容索引标识
  54. //column 修改字段名
  55. //value 修改内容
  56. $.get(ADMINSITEURL+'/'+action+'/ajax.html', {branch: ajax_branch, id: s_id, column: s_name, value: $(this).prop('value')}, function(data) {
  57. if (data === 'false')
  58. {
  59. alert('名称已经存在,请您换一个');
  60. $('span[fieldname="' + s_name + '"][fieldid="' + s_id + '"]').text(s_value);
  61. return;
  62. }
  63. });
  64. $(this).remove();
  65. }
  66. })
  67. .blur(function() {
  68. if (req)
  69. {
  70. if (!required($(this).prop('value'), s_value, $(this)))
  71. {
  72. return;
  73. }
  74. }
  75. if (type)
  76. {
  77. if (!check_type(type, $(this).prop('value'), s_value, $(this)))
  78. {
  79. return;
  80. }
  81. }
  82. if (max)
  83. {
  84. if (!check_max($(this).prop('value'), s_value, max, $(this)))
  85. {
  86. return;
  87. }
  88. }
  89. $(this).prev('span').show().text($(this).prop('value'));
  90. $.get(ADMINSITEURL+'/'+action+'/ajax.html', {branch: ajax_branch, id: s_id, column: s_name, value: $(this).prop('value')}, function(data) {
  91. if (data === 'false')
  92. {
  93. alert('名称已经存在,请您换一个');
  94. $('span[fieldname="' + s_name + '"][fieldid="' + s_id + '"]').text(s_value);
  95. return;
  96. }
  97. });
  98. $(this).remove();
  99. });
  100. $(this).hide();
  101. });
  102. $('span[ds_type="inline_edit_textarea"]').click(function() {
  103. var s_value = $(this).text();
  104. var s_name = $(this).attr('fieldname');
  105. var s_id = $(this).attr('fieldid');
  106. var req = $(this).attr('required');
  107. var type = $(this).attr('datatype');
  108. var max = $(this).attr('maxvalue');
  109. var ajax_branch = $(this).attr('ajax_branch_textarea');
  110. $('<textarea>')
  111. .text(s_value)
  112. .appendTo($(this).parent())
  113. .focus()
  114. .select()
  115. .keyup(function(event) {
  116. if (event.keyCode == 13)
  117. {
  118. if (req)
  119. {
  120. if (!required($(this).prop('value'), s_value, $(this)))
  121. {
  122. return;
  123. }
  124. }
  125. if (type)
  126. {
  127. if (!check_type(type, $(this).prop('value'), s_value, $(this)))
  128. {
  129. return;
  130. }
  131. }
  132. if (max)
  133. {
  134. if (!check_max($(this).prop('value'), s_value, max, $(this)))
  135. {
  136. return;
  137. }
  138. }
  139. $(this).prev('span').show().text($(this).prop("value"));
  140. //branch ajax 分支
  141. //id 修改内容索引标识
  142. //column 修改字段名
  143. //value 修改内容
  144. $.get(ADMINSITEURL+'/'+action+'/ajax.html', {branch: ajax_branch, id: s_id, column: s_name, value: $(this).prop('value')}, function(data) {
  145. if (data === 'false')
  146. {
  147. alert('名称已经存在,请您换一个');
  148. $('span[fieldname="' + s_name + '"][fieldid="' + s_id + '"]').text(s_value);
  149. return;
  150. }
  151. });
  152. $(this).remove();
  153. }
  154. })
  155. .blur(function() {
  156. if (req)
  157. {
  158. if (!required($(this).prop('value'), s_value, $(this)))
  159. {
  160. return;
  161. }
  162. }
  163. if (type)
  164. {
  165. if (!check_type(type, $(this).prop('value'), s_value, $(this)))
  166. {
  167. return;
  168. }
  169. }
  170. if (max)
  171. {
  172. if (!check_max($(this).prop('value'), s_value, max, $(this)))
  173. {
  174. return;
  175. }
  176. }
  177. $(this).prev('span').show().text($(this).prop('value'));
  178. $.get(ADMINSITEURL+'/'+action+'/ajax.html', {branch: ajax_branch, id: s_id, column: s_name, value: $(this).prop('value')}, function(data) {
  179. if (data === 'false')
  180. {
  181. alert('名称已经存在,请您换一个');
  182. $('span[fieldname="' + s_name + '"][fieldid="' + s_id + '"]').text(s_value);
  183. return;
  184. }
  185. });
  186. $(this).remove();
  187. });
  188. $(this).hide();
  189. });
  190. //给需要修改的图片添加异步修改行为
  191. $('img[ds_type="inline_edit"]').click(function() {
  192. var i_id = $(this).attr('fieldid');
  193. var i_name = $(this).attr('fieldname');
  194. var i_src = $(this).attr('src');
  195. var i_val = ($(this).attr('fieldvalue')) == 0 ? 1 : 0;
  196. var ajax_branch = $(this).attr('ajax_branch');
  197. $.get(ADMINSITEURL+'/'+action+'/ajax.html', {branch: ajax_branch, id: i_id, column: i_name, value: i_val}, function(data) {
  198. if (data == 'true')
  199. {
  200. if (i_val == 0)
  201. {
  202. $('img[fieldid="' + i_id + '"][fieldname="' + i_name + '"]').attr({'src': i_src.replace('enabled', 'disabled'), 'fieldvalue': i_val});
  203. }
  204. else
  205. {
  206. $('img[fieldid="' + i_id + '"][fieldname="' + i_name + '"]').attr({'src': i_src.replace('disabled', 'enabled'), 'fieldvalue': i_val});
  207. }
  208. }
  209. });
  210. });
  211. $('a[ds_type="inline_edit"]').click(function() {
  212. var i_id = $(this).attr('fieldid');
  213. var i_name = $(this).attr('fieldname');
  214. var i_src = $(this).attr('src');
  215. var i_val = ($(this).attr('fieldvalue')) == 0 ? 1 : 0;
  216. var ajax_branch = $(this).attr('ajax_branch');
  217. $.get(ADMINSITEURL+'/' + action + '/ajax', {branch: ajax_branch, id: i_id, column: i_name, value: i_val}, function(data) {
  218. if (data == 'true')
  219. {
  220. if (i_val == 0) {
  221. $('a[fieldid="' + i_id + '"][fieldname="' + i_name + '"]').attr({'class': ('enabled', 'disabled'), 'title': ('开启', '关闭'), 'fieldvalue': i_val});
  222. } else {
  223. $('a[fieldid="' + i_id + '"][fieldname="' + i_name + '"]').attr({'class': ('disabled', 'enabled'), 'title': ('关闭', '开启'), 'fieldvalue': i_val});
  224. }
  225. } else {
  226. alert('响应失败');
  227. }
  228. });
  229. });
  230. //给每个可编辑的小图片的父元素添加可编辑标题 $('img[ds_type="inline_edit"]').parent().attr('title','可编辑');
  231. //给列表有排序行为的列添加鼠标手型效果
  232. $('span[ds_type="order_by"]').hover(function() {
  233. $(this).css({cursor: 'pointer'});
  234. }, function() {
  235. });
  236. });
  237. //检查提交内容的必须项
  238. function required(str, s_value, jqobj)
  239. {
  240. if (str == '')
  241. {
  242. jqobj.prev('span').show().text(s_value);
  243. jqobj.remove();
  244. alert('此项不能为空');
  245. return 0;
  246. }
  247. return 1;
  248. }
  249. //检查提交内容的类型是否合法
  250. function check_type(type, value, s_value, jqobj)
  251. {
  252. if (type == 'number')
  253. {
  254. if (isNaN(value))
  255. {
  256. jqobj.prev('span').show().text(s_value);
  257. jqobj.remove();
  258. alert('此项仅能为数字');
  259. return 0;
  260. }
  261. }
  262. if (type == 'int')
  263. {
  264. var regu = /^-{0,1}[0-9]{1,}$/;
  265. if (!regu.test(value))
  266. {
  267. jqobj.prev('span').show().text(s_value);
  268. jqobj.remove();
  269. alert('此项仅能为整数');
  270. return 0;
  271. }
  272. }
  273. if (type == 'pint')
  274. {
  275. var regu = /^[0-9]+$/;
  276. if (!regu.test(value))
  277. {
  278. jqobj.prev('span').show().text(s_value);
  279. jqobj.remove();
  280. alert('此项仅能为正整数');
  281. return 0;
  282. }
  283. }
  284. if (type == 'zint')
  285. {
  286. var regu = /^[1-9]\d*$/;
  287. if (!regu.test(value))
  288. {
  289. jqobj.prev('span').show().text(s_value);
  290. jqobj.remove();
  291. alert('此项仅能为正整数');
  292. return 0;
  293. }
  294. }
  295. if (type == 'discount')
  296. {
  297. var regu = /[1-9]|0\.[1-9]|[1-9]\.[0-9]/;
  298. if (!regu.test(value))
  299. {
  300. jqobj.prev('span').show().text(s_value);
  301. jqobj.remove();
  302. alert('只能是0.1-9.9之间的数字');
  303. return 0;
  304. }
  305. }
  306. return 1;
  307. }
  308. //检查所填项的最大值
  309. function check_max(str, s_value, max, jqobj)
  310. {
  311. if (parseInt(str) > parseInt(max))
  312. {
  313. jqobj.prev('span').show().text(s_value);
  314. jqobj.remove();
  315. alert('此项应小于等于' + max);
  316. return 0;
  317. }
  318. return 1;
  319. }
  320. //新的inline_edit调用方法
  321. //javacript
  322. //$('span[ds_type="class_sort"]').inline_edit({controller: 'member',action: 'update_class_sort'});
  323. //html
  324. //<span ds_type="class_sort" column_id="<?php echo $val['class_id'];?>" title="<?php echo $lang['ds_editable'];?>" class="editable tooltip"><?php echo $val['class_sort'];?></span>
  325. //php
  326. //$result = array();
  327. //$result['result'] = FALSE;/TURE
  328. //$result['message'] = '错误';
  329. //echo json_encode($result);
  330. (function($) {
  331. $.fn.inline_edit = function(options) {
  332. var settings = $.extend({}, {open: false}, options);
  333. return this.each(function() {
  334. $(this).click(onClick);
  335. });
  336. function onClick() {
  337. var span = $(this);
  338. var old_value = $(this).html();
  339. var column_id = $(this).attr("column_id");
  340. $('<input type="text">')
  341. .insertAfter($(this))
  342. .focus()
  343. .select()
  344. .val(old_value)
  345. .blur(function() {
  346. var new_value = $(this).prop("value");
  347. if (new_value != '') {
  348. $.get(ADMINSITEURL + '/' + settings.controller + '/' + settings.action + '?branch=ajax', {id: column_id, value: new_value}, function(data) {
  349. data = $.parseJSON(data);
  350. if (data.result) {
  351. span.show().text(new_value);
  352. } else {
  353. span.show().text(old_value);
  354. alert(data.message);
  355. }
  356. });
  357. } else {
  358. span.show().text(old_value);
  359. }
  360. $(this).remove();
  361. })
  362. $(this).hide();
  363. }
  364. }
  365. })(jQuery);
  366. (function($) {
  367. $.fn.inline_edit_confirm = function(options) {
  368. var settings = $.extend({}, {open: false}, options);
  369. return this.each(function() {
  370. $(this).click(onClick);
  371. });
  372. function onClick() {
  373. var $span = $(this);
  374. var old_value = $(this).text();
  375. var column_id = $(this).prop("column_id");
  376. var $input = $('<input type="text">');
  377. var $btn_submit = $('<a class="inline-edit-submit" href="JavaScript:;">确认</a>');
  378. var $btn_cancel = $('<a class="inline-edit-cancel" href="JavaScript:;">取消</a>');
  379. $input.insertAfter($span).focus().select().val(old_value);
  380. $btn_submit.insertAfter($input);
  381. $btn_cancel.insertAfter($btn_submit);
  382. $span.hide();
  383. $btn_submit.click(function() {
  384. var new_value = $input.prop("value");
  385. if (new_value !== '' && new_value !== old_value) {
  386. $.post(ADMINSITEURL + '/' + settings.controller + '/' + settings.action, {id: column_id, value: new_value}, function(data) {
  387. data = $.parseJSON(data);
  388. if (data.result) {
  389. $span.text(new_value);
  390. } else {
  391. alert(data.message);
  392. }
  393. });
  394. }
  395. show();
  396. });
  397. $btn_cancel.click(function() {
  398. show();
  399. });
  400. function show() {
  401. $span.show();
  402. $input.remove();
  403. $btn_submit.remove();
  404. $btn_cancel.remove();
  405. }
  406. }
  407. };
  408. })(jQuery);