这也是1.4版本的bug,现在1.4.1也发布了,经验证,该问题在新版本中已经解决了

在网上找到的解决办法,地址:http://www.jeasyui.com/forum/index.php?topic=3659.msg8388

在easy ui的js里,添加下面的js代码:

  1. /**
  2. * The Patch for jQuery EasyUI 1.4
  3. */
  4. (function($){
  5. var plugin = $.fn._size;
  6. $.fn._size = function(options, parent){
  7. if (typeof options != 'string'){
  8. return this.each(function(){
  9. parent = parent || $(this).parent();
  10. if (parent.length){
  11. plugin.call($(this), options, parent);
  12. }
  13. });
  14. } else if (options == 'unfit'){
  15. return this.each(function(){
  16. var p = $(this).parent();
  17. if (p.length){
  18. plugin.call($(this), options, parent);
  19. }
  20. });
  21. } else {
  22. return plugin.call(this, options, parent);
  23. }
  24. }
  25. })(jQuery);
  26.  
  27. (function($){
  28. $.map(['validatebox','textbox','filebox','searchbox',
  29. 'combo','combobox','combogrid','combotree',
  30. 'datebox','datetimebox','numberbox',
  31. 'spinner','numberspinner','timespinner','datetimespinner'], function(plugin){
  32. if ($.fn[plugin]){
  33. if ($.fn[plugin].defaults.events){
  34. $.fn[plugin].defaults.events.click = function(e){
  35. if (!$(e.data.target).is(':focus')){
  36. $(e.data.target).trigger('focus');
  37. }
  38. };
  39. }
  40. }
  41. });
  42. $.fn.combogrid.defaults.height = 22;
  43. $(function(){
  44. $(document).bind('mousewheel', function(e){
  45. $(e.target).trigger('mousedown.combo');
  46. });
  47. });
  48. })(jQuery);
  49.  
  50. (function($){
  51. function setMe(target){
  52. var state = $.data(target, 'textbox');
  53. var opts = state.options;
  54. state.textbox.find('.textbox-addon .textbox-icon').each(function(index){
  55. $(this).attr('tabindex', '-1');
  56. });
  57. $(target).textbox('textbox').unbind('focus.textbox').bind('focus.textbox', function(e){
  58. var tb = $(target).next();
  59. if (tb.hasClass('textbox-focused')){return;}
  60. if ($(this).val() != opts.value){
  61. $(this).val(opts.value);
  62. }
  63. $(this).removeClass('textbox-prompt');
  64. tb.addClass('textbox-focused');
  65. });
  66. }
  67.  
  68. var plugin = $.fn.textbox;
  69. $.fn.textbox = function(options, param){
  70. if (typeof options != 'string'){
  71. return this.each(function(){
  72. plugin.call($(this), options, param);
  73. setMe(this);
  74. });
  75. } else {
  76. return plugin.call(this, options, param);
  77. }
  78. };
  79. $.fn.textbox.methods = plugin.methods;
  80. $.fn.textbox.defaults = plugin.defaults;
  81. $.fn.textbox.parseOptions = plugin.parseOptions;
  82. })(jQuery);
  83.  
  84. (function($){
  85. function setMe(target){
  86. var addon = $(target).next().find('.textbox-addon');
  87. addon.find('.spinner-arrow-up,.spinner-arrow-down').attr('tabindex','-1');
  88. }
  89.  
  90. var plugin = $.fn.spinner;
  91. $.fn.spinner = function(options, param){
  92. if (typeof options != 'string'){
  93. return this.each(function(){
  94. plugin.call($(this), options, param);
  95. setMe(this);
  96. });
  97. } else {
  98. return plugin.call(this, options, param);
  99. }
  100. };
  101. $.fn.spinner.methods = plugin.methods;
  102. $.fn.spinner.defaults = plugin.defaults;
  103. $.fn.spinner.parseOptions = plugin.parseOptions;
  104. })(jQuery);
  105.  
  106. (function($){
  107. $.extend($.fn.form.methods, {
  108. clear: function(jq){
  109. return jq.each(function(){
  110. var target = this;
  111. $('input,select,textarea', target).each(function(){
  112. var t = this.type, tag = this.tagName.toLowerCase();
  113. if (t == 'text' || t == 'hidden' || t == 'password' || tag == 'textarea'){
  114. this.value = '';
  115. } else if (t == 'file'){
  116. var file = $(this);
  117. if (!file.hasClass('textbox-value')){
  118. var newfile = file.clone().val('');
  119. newfile.insertAfter(file);
  120. if (file.data('validatebox')){
  121. file.validatebox('destroy');
  122. newfile.validatebox();
  123. } else {
  124. file.remove();
  125. }
  126. }
  127. } else if (t == 'checkbox' || t == 'radio'){
  128. this.checked = false;
  129. } else if (tag == 'select'){
  130. this.selectedIndex = -1;
  131. }
  132. });
  133.  
  134. var t = $(target);
  135. var plugins = ['textbox','combo','combobox','combotree','combogrid','slider'];
  136. for(var i=0; i<plugins.length; i++){
  137. var plugin = plugins[i];
  138. var r = t.find('.'+plugin+'-f');
  139. if (r.length && r[plugin]){
  140. r[plugin]('clear');
  141. }
  142. }
  143. $(target).form('validate');
  144. });
  145. }
  146. });
  147. $.extend($.fn.form.defaults, {
  148. onSubmit:function(){
  149. $(this).find('.textbox-text:focus').blur();
  150. return $(this).form('validate');
  151. }
  152. });
  153. })(jQuery);
  154.  
  155. (function($){
  156. function setSize(target, param){
  157. var opts = $.data(target, 'linkbutton').options;
  158. if (param){
  159. $.extend(opts, param);
  160. }
  161. if (opts.width || opts.height || opts.fit){
  162. var btn = $(target);
  163. var parent = btn.parent();
  164. var isVisible = btn.is(':visible');
  165. if (!isVisible){
  166. var spacer = $('<div style="display:none"></div>').insertBefore(target);
  167. var style = {
  168. position: btn.css('position'),
  169. display: btn.css('display'),
  170. left: btn.css('left')
  171. };
  172. btn.appendTo('body');
  173. btn.css({
  174. position:'absolute',
  175. display:'inline-block',
  176. left:-20000
  177. });
  178. }
  179. btn._size(opts, parent);
  180. var left = btn.find('.l-btn-left');
  181. left.css('margin-top', 0);
  182. left.css('margin-top', parseInt((btn.height()-left.height())/2)+'px');
  183. if (!isVisible){
  184. btn.insertAfter(spacer);
  185. btn.css(style);
  186. spacer.remove();
  187. }
  188. }
  189. }
  190.  
  191. var plugin = $.fn.linkbutton;
  192. $.fn.linkbutton = function(options, param){
  193. if (typeof options != 'string'){
  194. return this.each(function(){
  195. plugin.call($(this), options, param);
  196. setSize(this);
  197. });
  198. } else {
  199. return plugin.call(this, options, param);
  200. }
  201. };
  202. $.fn.linkbutton.methods = plugin.methods;
  203. $.fn.linkbutton.defaults = plugin.defaults;
  204. $.fn.linkbutton.parseOptions = plugin.parseOptions;
  205. $.extend($.fn.linkbutton.methods, {
  206. resize: function(jq, param){
  207. return jq.each(function(){
  208. setSize(this, param);
  209. })
  210. }
  211. })
  212. })(jQuery);
  213.  
  214. (function($){
  215. var plugin = $.fn.dialog;
  216. $.fn.dialog = function(options, param){
  217. var result = plugin.call(this, options, param);
  218. if (typeof options != 'string'){
  219. this.each(function(){
  220. var opts = $(this).panel('options');
  221. if (isNaN(parseInt(opts.height))){
  222. $(this).css('height', '');
  223. }
  224. var onResize = opts.onResize;
  225. opts.onResize = function(w, h){
  226. onResize.call(this, w, h);
  227. if (isNaN(parseInt(opts.height))){
  228. $(this).css('height', '');
  229. }
  230. var shadow = $.data(this, 'window').shadow;
  231. if (shadow){
  232. var cc = $(this).panel('panel');
  233. shadow.css({
  234. width: cc._outerWidth(),
  235. height: cc._outerHeight()
  236. });
  237. }
  238. }
  239. if (opts.closed){
  240. var pp = $(this).panel('panel');
  241. pp.show();
  242. $(this).panel('resize');
  243. pp.hide();
  244. }
  245. });
  246. }
  247. return result;
  248. };
  249. $.fn.dialog.methods = plugin.methods;
  250. $.fn.dialog.parseOptions = plugin.parseOptions;
  251. $.fn.dialog.defaults = plugin.defaults;
  252. })(jQuery);
  253.  
  254. (function($){
  255. function createTab(container, pp, options) {
  256. var state = $.data(container, 'tabs');
  257. options = options || {};
  258.  
  259. // create panel
  260. pp.panel({
  261. border: false,
  262. noheader: true,
  263. closed: true,
  264. doSize: false,
  265. iconCls: (options.icon ? options.icon : undefined)
  266. });
  267.  
  268. var opts = pp.panel('options');
  269. $.extend(opts, options, {
  270. onLoad: function(){
  271. if (options.onLoad){
  272. options.onLoad.call(this, arguments);
  273. }
  274. state.options.onLoad.call(container, $(this));
  275. }
  276. });
  277.  
  278. var tabs = $(container).children('div.tabs-header').find('ul.tabs');
  279.  
  280. opts.tab = $('<li></li>').appendTo(tabs); // set the tab object in panel options
  281. opts.tab.append(
  282. '<a href="javascript:void(0)" class="tabs-inner">' +
  283. '<span class="tabs-title"></span>' +
  284. '<span class="tabs-icon"></span>' +
  285. '</a>'
  286. );
  287.  
  288. $(container).tabs('update', {
  289. tab: pp,
  290. options: opts
  291. });
  292. }
  293. function addTab(container, options) {
  294. var opts = $.data(container, 'tabs').options;
  295. var tabs = $.data(container, 'tabs').tabs;
  296. if (options.selected == undefined) options.selected = true;
  297.  
  298. var pp = $('<div></div>').appendTo($(container).children('div.tabs-panels'));
  299. tabs.push(pp);
  300. createTab(container, pp, options);
  301.  
  302. opts.onAdd.call(container, options.title, tabs.length-1);
  303.  
  304. $(container).tabs('resize');
  305. if (options.selected){
  306. $(container).tabs('select', tabs.length-1);
  307. }
  308. }
  309. $.extend($.fn.tabs.methods, {
  310. add: function(jq, options){
  311. return jq.each(function(){
  312. addTab(this, options);
  313. })
  314. }
  315. })
  316. })(jQuery);
  317.  
  318. (function($){
  319. $.extend($.fn.menubutton.methods, {
  320. enable: function(jq){
  321. return jq.each(function(){
  322. $(this).data('menubutton').options.disabled = false;
  323. $(this).linkbutton('enable');
  324. });
  325. }
  326. });
  327. })(jQuery);
  328.  
  329. (function($){
  330. var onAfterRender = $.fn.datagrid.defaults.view.onAfterRender;
  331. $.extend($.fn.datagrid.defaults.view, {
  332. updateRow: function(target, rowIndex, row){
  333. var opts = $.data(target, 'datagrid').options;
  334. var rows = $(target).datagrid('getRows');
  335.  
  336. var oldStyle = _getRowStyle(rowIndex);
  337. $.extend(rows[rowIndex], row);
  338. var newStyle = _getRowStyle(rowIndex);
  339. var oldClassValue = oldStyle.c;
  340. var styleValue = newStyle.s;
  341. var classValue = 'datagrid-row ' + (rowIndex % 2 && opts.striped ? 'datagrid-row-alt ' : ' ') + newStyle.c;
  342.  
  343. function _getRowStyle(rowIndex){
  344. var css = opts.rowStyler ? opts.rowStyler.call(target, rowIndex, rows[rowIndex]) : '';
  345. var classValue = '';
  346. var styleValue = '';
  347. if (typeof css == 'string'){
  348. styleValue = css;
  349. } else if (css){
  350. classValue = css['class'] || '';
  351. styleValue = css['style'] || '';
  352. }
  353. return {c:classValue, s:styleValue};
  354. }
  355. function _update(frozen){
  356. var fields = $(target).datagrid('getColumnFields', frozen);
  357. var tr = opts.finder.getTr(target, rowIndex, 'body', (frozen?1:2));
  358. var checked = tr.find('div.datagrid-cell-check input[type=checkbox]').is(':checked');
  359. tr.html(this.renderRow.call(this, target, fields, frozen, rowIndex, rows[rowIndex]));
  360. tr.attr('style', styleValue).removeClass(oldClassValue).addClass(classValue);
  361. if (checked){
  362. tr.find('div.datagrid-cell-check input[type=checkbox]')._propAttr('checked', true);
  363. }
  364. }
  365.  
  366. _update.call(this, true);
  367. _update.call(this, false);
  368. $(target).datagrid('fixRowHeight', rowIndex);
  369. },
  370. onAfterRender: function(target){
  371. onAfterRender.call($.fn.datagrid.defaults.view, target);
  372. setTimeout(function(){
  373. var opts = $(target).datagrid('options');
  374. opts.pageNumber = opts.pageNumber || 1;
  375. },0);
  376. }
  377. });
  378.  
  379. $.fn.datagrid.defaults.loader = function(param, success, error){
  380. var opts = $(this).datagrid('options');
  381. if (!opts.url) return false;
  382. if (opts.pagination && opts.pageNumber == 0){
  383. opts.pageNumber = 1;
  384. param.page = 1;
  385. }
  386. if (param.page == 0){
  387. return false;
  388. }
  389. $.ajax({
  390. type: opts.method,
  391. url: opts.url,
  392. data: param,
  393. dataType: 'json',
  394. success: function(data){
  395. success(data);
  396. },
  397. error: function(){
  398. error.apply(this, arguments);
  399. }
  400. });
  401. };
  402. })(jQuery);
  403. (function($){
  404. function indexOfArray(a,o){
  405. for(var i=0,len=a.length; i<len; i++){
  406. if (a[i] == o) return i;
  407. }
  408. return -1;
  409. }
  410. function endEdit(target, index){
  411. var state = $.data(target, 'datagrid');
  412. var opts = state.options;
  413. var updatedRows = state.updatedRows;
  414. var insertedRows = state.insertedRows;
  415.  
  416. var tr = opts.finder.getTr(target, index);
  417. var row = opts.finder.getRow(target, index);
  418. if (!tr.hasClass('datagrid-row-editing')) {
  419. return;
  420. }
  421.  
  422. if (!$(target).datagrid('validateRow', index)){return}
  423.  
  424. var changed = false;
  425. var changes = {};
  426. tr.find('div.datagrid-editable').each(function(){
  427. var field = $(this).parent().attr('field');
  428. var ed = $.data(this, 'datagrid.editor');
  429. var t = $(ed.target);
  430. var input = t.data('textbox') ? t.textbox('textbox') : t;
  431. input.triggerHandler('blur');
  432. var value = ed.actions.getValue(ed.target);
  433. if (row[field] != value){
  434. row[field] = value;
  435. changed = true;
  436. changes[field] = value;
  437. }
  438. });
  439. if (changed){
  440. if (indexOfArray(insertedRows, row) == -1){
  441. if (indexOfArray(updatedRows, row) == -1){
  442. updatedRows.push(row);
  443. }
  444. }
  445. }
  446. opts.onEndEdit.call(target, index, row, changes);
  447.  
  448. tr.removeClass('datagrid-row-editing');
  449.  
  450. destroyEditor(target, index);
  451. $(target).datagrid('refreshRow', index);
  452.  
  453. opts.onAfterEdit.call(target, index, row, changes);
  454. }
  455. function destroyEditor(target, index){
  456. var opts = $.data(target, 'datagrid').options;
  457. var tr = opts.finder.getTr(target, index);
  458. tr.children('td').each(function(){
  459. var cell = $(this).find('div.datagrid-editable');
  460. if (cell.length){
  461. var ed = $.data(cell[0], 'datagrid.editor');
  462. if (ed.actions.destroy) {
  463. ed.actions.destroy(ed.target);
  464. }
  465. cell.html(ed.oldHtml);
  466. $.removeData(cell[0], 'datagrid.editor');
  467.  
  468. cell.removeClass('datagrid-editable');
  469. cell.css('width','');
  470. }
  471. });
  472. }
  473.  
  474. $.extend($.fn.datagrid.methods, {
  475. endEdit: function(jq, index){
  476. return jq.each(function(){
  477. endEdit(this, index);
  478. })
  479. }
  480. })
  481. })(jQuery);
  482.  
  483. (function($){
  484. function setGrid(target){
  485. var opts = $.data(target, 'propertygrid').options;
  486. $(target).datagrid('options').onBeforeEdit = function(index, row){
  487. if (opts.onBeforeEdit.call(target, index, row) == false){return false;}
  488. var dg = $(this);
  489. var col = dg.datagrid('getColumnOption', 'value');
  490. col.editor = row.editor;
  491. }
  492. }
  493.  
  494. var plugin = $.fn.propertygrid;
  495. $.fn.propertygrid = function(options, param){
  496. if (typeof options == 'string'){
  497. return plugin.call(this, options, param);
  498. } else {
  499. return this.each(function(){
  500. plugin.call($(this), options, param);
  501. setGrid(this);
  502. });
  503. }
  504. };
  505. $.fn.propertygrid.defaults = plugin.defaults;
  506. $.fn.propertygrid.methods = plugin.methods;
  507. $.fn.propertygrid.parseOptions = plugin.parseOptions;
  508. })(jQuery);
  509.  
  510. (function($){
  511. $.fn.numberbox.defaults.filter = function(e){
  512. var opts = $(this).numberbox('options');
  513. var s = $(this).numberbox('getText');
  514. if (e.which == 45){ //-
  515. return (s.indexOf('-') == -1 ? true : false);
  516. }
  517. var c = String.fromCharCode(e.which);
  518. if (c == opts.decimalSeparator){
  519. return (s.indexOf(c) == -1 ? true : false);
  520. } else if (c == opts.groupSeparator){
  521. return true;
  522. } else if ((e.which >= 48 && e.which <= 57 && e.ctrlKey == false && e.shiftKey == false) || e.which == 0 || e.which == 8) {
  523. return true;
  524. } else if (e.ctrlKey == true && (e.which == 99 || e.which == 118)) {
  525. return true;
  526. } else {
  527. return false;
  528. }
  529. }
  530. })(jQuery);
  531.  
  532. (function($){
  533. var FILE_INDEX = 0;
  534. function buildFileBox(target){
  535. var state = $.data(target, 'filebox');
  536. var opts = state.options;
  537. var id = 'filebox_file_id_' + (++FILE_INDEX);
  538. $(target).addClass('filebox-f').textbox($.extend({}, opts, {
  539. buttonText: opts.buttonText ? ('<label for="' + id + '">' + opts.buttonText + '</label>') : ''
  540. }));
  541. $(target).textbox('textbox').attr('readonly','readonly');
  542. state.filebox = $(target).next().addClass('filebox');
  543. state.filebox.find('.textbox-value').remove();
  544. opts.oldValue = "";
  545. var file = $('<input type="file" class="textbox-value">').appendTo(state.filebox);
  546. file.attr('id', id).attr('name', $(target).attr('textboxName')||'');
  547. file.css('visibility', 'visible');
  548. file.change(function(){
  549. $(target).filebox('setText', this.value);
  550. opts.onChange.call(target, this.value, opts.oldValue);
  551. opts.oldValue = this.value;
  552. });
  553. var btn = $(target).filebox('button');
  554. if (btn.length){
  555. if (btn.linkbutton('options').disabled){
  556. file.attr('disabled', 'disabled');
  557. } else {
  558. file.removeAttr('disabled');
  559. }
  560. }
  561. }
  562.  
  563. var plugin = $.fn.filebox;
  564. $.fn.filebox = function(options, param){
  565. if (typeof options != 'string'){
  566. return this.each(function(){
  567. plugin.call($(this), options, param);
  568. buildFileBox(this);
  569. });
  570. } else {
  571. return plugin.call(this, options, param);
  572. }
  573. };
  574. $.fn.filebox.methods = plugin.methods;
  575. $.fn.filebox.defaults = plugin.defaults;
  576. $.fn.filebox.parseOptions = plugin.parseOptions;
  577. })(jQuery);
  578.  
  579. (function($){
  580. function forNodes(data, callback){
  581. var nodes = [];
  582. for(var i=0; i<data.length; i++){
  583. nodes.push(data[i]);
  584. }
  585. while(nodes.length){
  586. var node = nodes.shift();
  587. if (callback(node) == false){return;}
  588. if (node.children){
  589. for(var i=node.children.length-1; i>=0; i--){
  590. nodes.unshift(node.children[i]);
  591. }
  592. }
  593. }
  594. }
  595. function findNodeBy(target, param, value){
  596. var data = $.data(target, 'tree').data;
  597. var result = null;
  598. forNodes(data, function(node){
  599. if (node[param] == value){
  600. result = attachProperties(node);
  601. return false;
  602. }
  603. });
  604. return result;
  605. }
  606. function getNode(target, nodeEl){
  607. return findNodeBy(target, 'domId', $(nodeEl).attr('id'));
  608. }
  609. function attachProperties(node){
  610. var d = $('#'+node.domId);
  611. node.target = d[0];
  612. node.checked = d.find('.tree-checkbox').hasClass('tree-checkbox1');
  613. return node;
  614. }
  615. $.fn.tree.methods.getChildren = function(jq, nodeEl){
  616. var target = jq[0];
  617. var nodes = [];
  618. var n = getNode(target, nodeEl);
  619. var data = n ? (n.children||[]) : $.data(target, 'tree').data;
  620. forNodes(data, function(node){
  621. nodes.push(attachProperties(node));
  622. });
  623. return nodes;
  624. }
  625. })(jQuery);

easy ui 1.4的NumberBox,失去焦点后不能再次输入小数点的更多相关文章

  1. Easy UI分页控件修改刷新方法后触发两次请求

    今天我在做分页的时候,有这样的一个现象: 我重写了分页的刷新和改变页面大小的方法,发现给服务器提交了两次post,问题出现在哪里的?经过alert调试,发现原因是: 刷新和改变页面大小的事件执行的时候 ...

  2. JQuery Easy Ui dataGrid 数据表格 ---制作查询下拉菜单

    JQuery Easy Ui dataGrid 数据表格 数据表格 - DataGrid 继承$.fn.panel.defaults,使用$.fn.datagrid.defaults重载默认值.. 数 ...

  3. JQuery Easy Ui (Tree树)详解(转)

    第一讲:JQuery Easy Ui到底是什么呢? 首先咱们知道JQuery是对Java Script的封装,是一个js库,主要提供的功能是选择器,属性修改和事件绑定等等.. JQuery ui是在j ...

  4. 茗洋Easy UI 1.3.5 部分问题解决系列专题[自定义alert关闭时间,自动关]

    [评论,楼层数为30的倍数的,我送你我自己的博客园的皮肤,该博客参与活动] 这次我又给大家带来的EasyUI的我研究拓展的新特性 我使用的是  EasyUI 1.3.5版本的,项目是ASP.NET M ...

  5. 让Easy UI 的DataGrid直接内嵌的JSON对象,并重写form load 方法

    前言 我有这样的JSON对象 { "UserName": "jf", "UserPwd": "123456", &quo ...

  6. Struts2 easy UI插件

    一.easy UI是类似于jQuery UI的插件库,它提供了丰富的各种常用插件:tree.datagrid... tree插件: 语法:$(selector).tree([settings]); 常 ...

  7. Easy UI常用插件使用

    一.easy UI是类似于jQuery UI的插件库,它提供了丰富的各种常用插件:tree.datagrid... tree插件: 语法:$(selector).tree([settings]); 常 ...

  8. easy ui插件

    简介: easy UI是类似于jQuery UI的插件库 注意:多脚本同时使用时,注意脚本冲突问题. 常用插件: 1.tree插件(tree插件实现动态树形菜单) 2.datagrid插件(datag ...

  9. easy ui 框架

    Easy UI 准备工作(搭建) 1.在WebRoot 的目录下创建js 文件夹,在文件夹中倒入一下两个包 Jquery.easyui.min.js jquery.min.js 2.在WebRoot ...

随机推荐

  1. 富客户端 wpf, Winform 多线程更新UI控件

    前言 在富客户端的app中,如果在主线程中运行一些长时间的任务,那么应用程序的UI就不能正常相应.因为主线程要负责消息循环,相应鼠标等事件还有展现UI. 因此我们可以开启一个线程来格外处理需要长时间的 ...

  2. 阿里巴巴开源技术 WebX

    0. WebX项目目前已开源, 项目开源地址:https://github.com/webx/citrus-sample.git 项目参考文档:http://www.openwebx.org/docs ...

  3. 高级Java研发工程师面试题总结

    目录 一.Java基础 二.JVM虚拟机基础 三.开源框架基础 四.分布式基础 五.设计模式基础 六.数据库基础 七.网络基础 八.数据结构和算法基础 九.Linux基础 十.其他技术基础 一.JAV ...

  4. 说说IT技术团队招聘那点事

    因为近来由于新项目的需要,各种招聘比较多,几乎每周都要面试几个人,顺便对以前的面试和带开发经验进行简单的总结 1.首先负责招聘的人一定得是自己团队的人,而且在招聘的时候一定要想清楚目标候选人进来的职责 ...

  5. json 对象 数组

    一.json写法以及获得其数据的方法 var jsons={ name:'wen', age:12, price:'qq' } console.log(typeof jsons);//object c ...

  6. C#如何在钉钉开发平台中创建部门

    钉钉是阿里巴巴专为中小企业和团队打造的沟通.协同的多端平台,钉钉开放平台旨在为企业提供更为丰富的办公协同解决方案.通过钉钉开放平台,企业或第三方合作伙伴可以帮助企业快速.低成本的实现高质量的移动微应用 ...

  7. Cool!15个创意的 CSS3 文本效果【下篇】

    这里文章收集了15个创意的 CSS3 文本效果,所有的都是精心挑选,这些可能会增加创意的火花到你的下一个项目.其中有些是用于特定用途,而另一些则适用于多种用途.如果你想要一个精彩而又充满色彩的文字效果 ...

  8. 【MVC学习笔记01】初窥奥秘

    前言 最近工作落实了,是我非常喜欢的无线前端,会接触很多新东西啦,需要努力才行.因为会用到backbone,所以要学习MVC啦. MVC(模型-视图-控制器),这种模式最早被用于构建桌面程序和服务器端 ...

  9. Sublime Text 3汉化中文版

    Sublime Text 3汉化中文版是Sublime Text2的升级版.Sublime Text 是一款流行的文本编辑器软件,有点类似于TextMate,跨平台,可运行在Linux,Windows ...

  10. 在线代码编辑器CodeMirror简介

    1.什么是Code Mirror 最近做一个项目需要在网页上实现一个代码编辑器,支持语法高亮.自动缩进.智能提示等功能.发现Code Mirror刚好满足所有需求.Code Mirror是由js写的一 ...