分类 "JavaScript" 下的文章

问题:除法时小数太长,希望只保留小数点后两位
解决:使用toFixed()方法
方法:
(13/7).toFixed(2)
这样就会得到1.86保留两位小数了

问题:js判断输入的验证码是否为数字
解决:使用isNaN方法
方法:
var authcode = $('#authcode').val();
if(isNaN(authcode)){
alert('请输入正确的验证码');
return false;
}

注:如果是数字,isNaN返回为false

问题:js如何替换掉字符串中的所有空格,replaceAll的方法有没有?
解决:js中只有replce方法,没有replaceAll方法,replce方法只能替换第一个字符串,但可以使用正则表达式的g功能,进行替换所有
方法:
str = 'undo redo |removeformat |-tool1-tool2-image-link unlink |-emotion-formula';
str.repalce(/[ ]/g, '-').repalce(/|/g,'-');
这样就可以把字符串中的空格和竖杠全都替换成横杠了
结果:undo-redo--removeformat---tool1-tool2-image-link-unlink---emotion-formula

问题:在使用百度umeditor的时候总是加载map.js,link.js,formula.js,emotion.js,image.js等js文件,有的功能我根本不需要,为了加快umeditor的加载速度,如何去除这些js文件的加载呢?
解决:仅仅修改配置文件是不行的,还需要修改umeditor.js文件
方法:
一、复制umeditor.js文件,umeditor.new.js
二、原理:根据umeditor.config.js的配置文件配置的选项来加载js文件,加载的内容都写在UM.registerUI中了,只需要去除里面的map等不需要的选项就可以了
三、修改的代码如下
在20行加上
var umconf_toolbar = UMEDITOR_CONFIG.toolbar;
var umconf_str = umconf_toolbar.join('-').replace(/[ ]/g,'-').replace(/|/g,'-').replace(/[-]+/g,'-');
var toolbar_list = umconf_str.split('-');

在10279行加上

var origin_str1 = 'link image video map formula'; // 使用jquery的$.inArray if($.inArray('link', toolbar_list) < 0 && $.inArray('unlink', toolbar_list) < 0){ origin_str1 = origin_str1.replace('link ', ''); } if($.inArray('image', toolbar_list) < 0){ origin_str1 = origin_str1.replace(' image ', ' '); } if($.inArray('map', toolbar_list) < 0){ origin_str1 = origin_str1.replace(' map ', ' '); } if($.inArray('video', toolbar_list) < 0){ origin_str1 = origin_str1.replace(' video ', ' '); } if($.inArray('formula', toolbar_list) < 0){ origin_str1 = origin_str1.replace(' formula', ''); }
将原来的

UM'link image video map formula', function(name){
替换成

UM.registerUI(origin_str1, function(name){
在10397行加上

var origin_str2 = 'emotion formula'; // 使用jquery的$.inArray if($.inArray('emotion', toolbar_list) < 0){ origin_str2 = origin_str2.replace('emotion ', ''); } if($.inArray('formula', toolbar_list) < 0){ origin_str2 = origin_str2.replace(' formula', ''); } UM.registerUI( origin_str2, function( name ){

问题:因为ajax新添加的元素需要绑定事件,使用click()、bind()、on()都需要写在ajax内,嵌套太多了,需要事件委派功能,但最新的jquery已经不能使用live()了
解决:使用jquery中另一个方法delegate方法(最新的jquery中degegate也弃用了,可以使用on事件替代)
方法:

    $('#upload_form').on('submit',function(){ var formData = new FormData($(this)[0]); $.ajax({ url: '/api/upload', type: 'post', data: formData, dataType: "json", async: false, cache: false, contentType: false, processData: false, success: function(data){ if(data.code=='err'){ alert(data.msg); }else if(data.code=='ok'){ alert("上传成功!"); var file_html = '
  • '+ data.result['oname'] +'
  • '; $('ul').append(file_html); }else{ } } }); return false; }); // 给li绑定click事件 // $('ul').delegate('li', 'click', function(){ //   var thisId = $(this).attr('id'); //   alert(thisId); // }); // 给li绑定click事件,替换上面的delegate方法 $('ul').on("click", "li", function(){  // 注意此处是先事件,后子元素 var thisId = $(this).attr('id'); alert(thisId); });