Back

常用代码片段

操作元素的样式

$("#msg").css("background"); //返回元素的背景颜色
$("#msg").css("background","#ccc") //设定元素背景为灰色
$("#msg").height(300); $("#msg").width("200"); //设定宽高
$("#msg").css({ color: "red", background: "blue" });//以名值对的形式设定样式

$("p").attr("class", "ddiiyy"); //设置p元素的class为 "ddiiyy" 
$("#nm_p").addClass("another"); // 追加样式 
$("p").removeClass("ddiiyy another"); //溢出样式
$("p").toggleClass("ddiiyy"); //如果存在(不存在)就删除(添加)名为ddiiyy的class
$("p").hasClass("another"); //是否含有某个class。是返true,否返false
$("p").is(".another"); //is("."+class);//JQuery实现,增强代码可读性

readonly和disabled

表单中readOnly和disabled的区别:
readonly只针对input(text/ password)和textarea有效,而disabled对于所有的表单元素都有效,包括select,radio, checkbox, button等。
但是表单元素在使用了disabled后,当我们将表单以POST或GET的方式提交的话,这个元素的值不会被传递出去,而readonly会将该值传递出去(这种情况出现在我们将某个表单中的textarea元素设置为disabled或readonly,但是submit或button却是可以使用的)。


隐藏和显示(操作display属性)

$("#id").show();//表示display:block, 
$("#id").hide();//表示display:none; 
$("#id").toggle();//切换元素的可见状态。如果元素是可见的,切换为隐藏的;如果元素是隐藏的,切换为可见的。
$("#id").css('display','none'); 
$("#id").css('display','block'); 
或 
$("#id")[0].style.display = 'none';

操作disabled属性

js操作:

function disableElement(element,val){
    document.getElementById(element).disabled=val;d
}

jQuery进行操作:

//两种方法设置disabled属性
$('#areaSelect').attr("disabled",true);
$('#areaSelect').attr("disabled","disabled");
//三种方法移除disabled属性
$('#areaSelect').attr("disabled",false);
$('#areaSelect').removeAttr("disabled");
$('#areaSelect').attr("disabled","");

获取s:textfield,并设置其disabled属性:

functiondisableTextfieldofAccountDiv(element,val) {
    $(element).find(":textfield").attr('disabled',val);
}

禁用a,button点击

1.jquery禁用a标签方法1

$(document).ready(function () {
    $("a").each(function () {
        var textValue = $(this).html();
        if (textValue == "XX概况" || textValue == "服务导航") {
            $(this).css("cursor", "default");
            $(this).attr('href', '#');     //修改<a>的 href属性值为 #  这样状态栏不会显示链接地址 
            $(this).click(function (event) {
                event.preventDefault();   // 如果<a>定义了 target="_blank“ 需要这句来阻止打开新页面
            });
        }
    });
});

2.jquery禁用a标签方法2

$('a.tooltip').live('click', function(event) {
  alert("抱歉,已停用!"); 
  event.preventDefault();  
});

3.jquery禁用a标签方法3

$(function(){
    $('.disableCss').removeAttr('href');//去掉a标签中的href属性
    $('.disableCss').removeAttr('onclick');//去掉a标签中的onclick事件
});

4.jquery控制按钮的禁用与启用

$('#button').attr('disabled',"true");//添加disabled属性
$('#button').removeAttr("disabled"); //移除disabled属性

5.css3

<a style="pointer-events: none;" onclick="alert('ok');">无法点击</a>

操作checked属性\回显

<input id="cb1" type="checkbox" checked />
<input id="cb2" type="checkbox" checked="checked" />

1.jquery判断checked的三种方法:

.attr('checked')   //看版本1.6+返回:"checked"或"undefined" ;1.5-返回:true或false
.prop('checked') //16+:true/false
.is(':checked')    //所有版本:true/false

2.jquery赋值checked的几种写法:

//所有的jquery版本都可以这样赋值
$("#cb1").attr("checked","checked");
$("#cb1").attr("checked",true);

//jquery1.6+:prop的4种赋值
$("#cb1").prop("checked",true);    //很简单就不说了哦
$("#cb1").prop({checked:true});    //map键值对
$("#cb1").prop("checked",function(){  return true;   }); //函数返回true或false
$("#cb1").prop("checked","checked");

3.check回显的一个demo:

if(list){
    if(type==1){
        var checkBoxAll = $("input[name='outsideFileName']");
        for(var i=0;i<list.length;i++){
            $.each(checkBoxAll,function(j,checkbox){
                //获取复选框的value属性
                var checkValue=$(checkbox).val();
                if(list[i].filePath==checkValue){
                    $(checkbox).attr("checked",true);
                }
            })
        }
    }
}

checkbox(全选反选..)

demo:

注:jquery1.9.0+无法正常显示
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<title>jQuery 对checkbox的操作</title> 
</HEAD> 
<body style="text-align:center;margin: 0 auto;font-size: 12px;" mce_style="text-align:center;margin: 0 auto;font-size: 12px;"> 
<div style="border: 1px solid #999; width: 500px; padding: 15px; background: #eee; margin-top: 150px;"> 
<form name="form1" method="post" action=""> 
<input type="button" id="btn1" value="全选"> 
<input type="button" id="btn2" value="取消全选"> 
<input type="button" id="btn3" value="选中所有奇数"> 
<input type="button" id="btn4" value="反选"> 
<input type="button" id="btn5" value="获得选中的所有值"> 
<br /><br /> 
<input type="checkbox" name="checkbox" value="checkbox1"> 
checkbox1 
<input type="checkbox" name="checkbox" value="checkbox2"> 
checkbox2 
<input type="checkbox" name="checkbox" value="checkbox3"> 
checkbox3 
<input type="checkbox" name="checkbox" value="checkbox4"> 
checkbox4 
<input type="checkbox" name="checkbox" value="checkbox5"> 
checkbox5 
<input type="checkbox" name="checkbox" value="checkbox6"> 
checkbox6 
</form> 
</div> 
</body> 
</HTML> 

<script  type="text/javascript" src="http://libs.baidu.com/jquery/1.8.0/jquery.js"></script>
<script type="text/javascript"> 
<!-- 
$("document").ready(function(){ 
$("#btn1").click(function(){ 
$("[name='checkbox']").attr("checked",'true');//全选 
}) 
$("#btn2").click(function(){ 
$("[name='checkbox']").removeAttr("checked");//取消全选 
}) 
$("#btn3").click(function(){ 
$("[name='checkbox']:even").attr("checked",'true');//选中所有奇数 
}) 
$("#btn4").click(function(){ 
$("[name='checkbox']").each(function(){//反选 
if($(this).attr("checked")){ 
$(this).removeAttr("checked"); 
} 
else{ 
$(this).attr("checked",'true'); 
} 
}) 
}) 
$("#btn5").click(function(){//输出选中的值 
var str=""; 
$("[name='checkbox'][checked]").each(function(){ 
str+=$(this).val()+"/r/n"; 
//alert($(this).val()); 
}) 
alert(str); 
}) 
}) 
--> 
</script> 

2.获取checkbox选中的值

var chk_value =[]; 
$('input[name="test"]:checked').each(function(){ 
    chk_value.push($(this).val()); 
});

3.点击全选 非全选

$('input[name="pCheckBox"]').click(function(){  
    //alert(this.checked);  
    if($(this).is(':checked')){  
        $('input[name="eventIds"]').each(function(){  
            //此处如果用attr,会出现第三次失效的情况  
            $(this).prop("checked",true);  
        });  
    }else{  
         $('input[name="eventIds"]').each(function(){  
            $(this).removeAttr("checked",false);  
        });  
        //$(this).removeAttr("checked");  
    }  
});  

radio

1.获取选中值

$('input:radio :checked').val();
$("input[type='radio']:checked").val();
$("input[name='rd']:checked").val();

2.设置第一个Radio为选中值

$('input:radio :first').attr('checked', 'checked');
$('input:radio :first').attr('checked', 'true');

3.设置最后一个Radio为选中值

$('input:radio :last').attr('checked', 'checked');
$('input:radio :last').attr('checked', 'true');

4.根据索引值设置任意一个radio为选中值

$('input:radio').eq(索引值).attr('checked', 'true');//索引值=0,1,2....
$('input:radio').slice(1,2).attr('checked', 'true');

5.根据Value值设置Radio为选中值

$("input:radio[value='rd2']").attr('checked','true');
$("input[value='rd2']").attr('checked','true');

select

<select id="s">
    <option value="1">嘻嘻</option>
    <option value="2">呵呵</option>
</select>

1.获取select中option被选中的文本值

误:$("#s").text();  //获取所有option的文本值
$("#s option:selected").text();  //获取选中的option的文本值
$("#s").find("option:selected").text(); //获取选中的option的文本值

2.获取select中option被选中的value值

$("#s").val();
$("#s option:selected").val();

3.js获取select选中的值

var sel=document.getElementById("s"); 
var index = sel.selectedIndex; // 选中索引
albumid= sel.options[index].value;//要的值

textarea

<textarea name="content" id="content" rows="8" cols="5">这是textarea内容</textarea>

1.获取textarea文本值(用name和id)

$("textarea[name='content']").val()      $("#content").val()    
$("textarea[name='content']").text()      $("#content").text()    

2.赋值textarea文本值(只能用id)

$("#content").val("这是要写入的textarea文本内容")
$("#content").text("这是要写入的textarea文本内容")

val和text的区别是:val()可以体现换行符,而text()不能。

3.禁止文本域textarea可拖拽的方法:

textarea{ resize:none;}

4.让textarea没有黄框且不能拖拽:

textarea{outline:none;resize:none;}

confirm,二次确认

if(confirm("确定要删除该记录吗?")){
    doSomething();
}

重置表单reset

使用jquery方法重置form表单

误:$('#formName').reset();//得到的是数组。
正:$('#formName')[0].reset();//得到的是jQuery对象。

注:这种方式虽然可以重置表单,但是不能重置隐藏字段。隐藏字段要单独处理。
小知识:$('#formName').get(0)得到的是DOM对象。


jquery 获取元素个数

$('#div1').children().length;
$('#div1').children('span').length;//获取id=div1下的span元素个数

定位

<div id =''localid"> xixi</div>
window.location.href='#localid';

修改标题title

document.title="批量业务单"; 

JQ的事件处理功能

1.hover

//当鼠标放在表格的某行上时将class置为over,离开时置为out。
$("tr").hover(
function(){
     $(this).addClass("over");
}, 
function(){ 
    $(this).addClass("out"); 
});

demo鼠标移入出现悬浮框

<td class='linkTd'>
    <div style='position:relative;'>
        @link<span class='linkHover'>@detailLink</span>
    </div>
</td>

.linkHover{         
    position: absolute;  
    top: 20px;  
    width: 320px;
    max-height: 250px;           /* 设置最大高度,当高度达到此值时出现滚动条 */  
    z-index: 10;  
    background-color: #E0E5E5;   
    overflow: auto;              /* 自动添加滚动条 */  
    box-shadow:0px 0px 10px #000;   /* 外阴影 */  
    display:none;
}

$('.linkTd').hover(  
    function(){   
        $(this).find('.linkHover').show();
    } ,  
    function(){  
        $(this).find('.linkHover').hide();
    }   
);

进化

```
    <!doctype html>
    <html>
        <head>
            <title class="lang" langKey="xxxx">index</title>
            <meta http-equiv="Content-Type" content="text/html; charset=utf8" />
            <script type="text/javascript" src="js/jquery.min.js"></script>
            <style>
            .linkHover{         
                position: absolute;  
                top: 20px;  
                width: 320px;
                max-height: 250px;           /* 设置最大高度,当高度达到此值时出现滚动条 */  
                z-index: 10;  
                background-color: #E0E5E5;   
                overflow: auto;              /* 自动添加滚动条 */  
                box-shadow:0px 0px 10px #000;   /* 外阴影 */  
                display:none;
            }
            </style>
        </head>
        <body>
            <div class='linkTd'>
                123123
            </div>
        </body>
        <script>
            $(function () {
                var tip ="<div style='position:relative;'> <span class='linkHover'>1111</span> </div>";
                    $('.linkTd').append(tip);
            })
            $('.linkTd').hover( 
                function(){   
                    $(this).find('.linkHover').show();
                } ,  
                function(){  
                    $(this).find('.linkHover').hide();
                }   
            );
        </script
    </html>
```

2.ready
在文档加载后激活函数:

$(document).ready(function(){
  $(".btn1").click(function(){
    $("p").slideToggle();
  });
});

语法 1 $(document).ready(function)
语法 2 $().ready(function)
语法 3 $(function)

3.toggle
toggle()和slidetoggle()方法提供了状态切换功能。
toggle()方法包括了hide()和show()方法。 slideToggle()方法包括了slideDown()和slideUp()方法。

//每次点击时轮换添加和删除名为selected的class。
$("p").toggle(function(){ 
     $(this).addClass("selected"); 
},function(){ 
     $(this).removeClass("selected"); 
});

4.trigger
在每一个匹配的元素上触发某类事件,如模拟点击,回车登录

//模拟点击
$("#b").click(function(){$("#a").trigger("click")})
$("#a").trigger("click");//执行#a的click事件

//回车点击
$(document).keyup(function(event){
  if(event.keyCode ==13){
    $("#btn_login").trigger("click");
  }
});

form表单增加<input type="text" style="display:none"/>可以防止回车提交自动提交表单

推荐:keyup,防止笔记本键盘不小心触摸到了 有些文档中有写成这样:

$(window).keydown(function(){
...
})

XP系统IE6下是不成功的。

5.bind(eventtype,fn),unbind(eventtype)
事件的绑定与反绑定

$("p").bind("click", function(){alert($(this).text());}); //为每个p元素添加单击事件 
$("p").unbind(); //删除所有p元素上的所有事件 
$("p").unbind("click") //删除所有p元素上的单击事件

JQ集合遍历

//为索引分别为0,1,2的p元素分别设定不同的字体颜色。
$("p").each(function(i){this.style.color=['#f00','#0f0','#00f'][i]})
//实现表格的隔行换色效果
$("tr").each(function(i){this.style.backgroundColor=['#ccc','#fff'][i%2]})
//为每个p元素增加了click事件,单击某个p元素则弹出其内容
$("p").click(function(){alert($(this).html())})

demo遍历table的tr获取td的值:

<tbody id="history_income_list">
    <tr>
        <td align="center"><input type="text" class="input-s input-w input-hs"></td>
        <td align="center"><input type="text" class="input-s input-w input-hs"></td>
        <td align="center"><input type="text" class="input-s input-w input-hs"></td>
        <td align="center"><a class="" onclick="history_income_del(this);" href="###">删除</a></td>
    </tr>
    <tr>
        <td align="center"><input type="text" class="input-s input-w input-hs"></td>
        <td align="center"><input type="text" class="input-s input-w input-hs"></td>
        <td align="center"><input type="text" class="input-s input-w input-hs"></td>
        <td align="center"><a class="" href="###">删除</a></td>
    </tr>
    <tr>
        <td align="center"><input type="text" class="input-s input-w input-hs"></td>
        <td align="center"><input type="text" class="input-s input-w input-hs"></td>
        <td align="center"><input type="text" class="input-s input-w input-hs"></td>
        <td align="center"><a class="" href="###">删除</a></td>
    </tr>
</tbody>

for循环遍历

var trList = $("#history_income_list").children("tr")
for (var i=0;i<trList.length;i++) {
    var tdArr = trList.eq(i).find("td");
    var history_income_type = tdArr.eq(0).find("input").val();//收入类别
    var history_income_money = tdArr.eq(1).find("input").val();//收入金额
    var history_income_remark = tdArr.eq(2).find("input").val();//  备注
    ...
}

JQ遍历

$("#history_income_list").find("tr").each(function(){
    var tdArr = $(this).children();
    var history_income_type = tdArr.eq(0).find("input").val();//收入类别
    var history_income_money = tdArr.eq(1).find("input").val();//收入金额
    var history_income_remark = tdArr.eq(2).find("input").val();//  备注
    ...
});

Map集合遍历

//{"code":"1","desc":"操作成功","data":{"shfwxt":"售后服务系统","cs_win":"测试_win","qdglxt":"渠道管理系统"}}
success: function(result) {
    if(result.code == '1'){
        var data = result.data;
        var html = "<option selected='selected' value=''>请选择权限代码</option>";
        $.each(data, function (key, value) {
            html += "<option value= '" + key + "'>" + value +"(" + key+")</option>";
        });
        $("#permissionCode").html('').append(html);
        layui.use('form', function() {
            var form = layui.form; //只有执行了这一步,部分表单元素才会自动修饰成功
            form.render();
        });
    }else{
        _msgShowToFunc(result.desc);
    }
}

jquery $.

$.extend

//为jquery扩展了min,max两个方法
$.extend({ 
    min: function(a, b){return a < b?a:b; },
    max: function(a, b){return a > b?a:b; }
});

使用扩展的方法(通过“$.方法名”调用):

alert("a=10,b=20,max="+$.max(10,20)+",min="+$.min(10,20));

$.each

$.each(obj, fn):通用的迭代函数。可用于代替循环。 如

$.each( [0,1,2], function(i, n){ alert( "Item #" + i + ": " + n ); });
//等价 
var tempArr=[0,1,2]; 
for(var i=0;i<tempArr.length;i++){ alert("Item #"+i+": "+tempArr[i]); }

也可以处理json数据,如

$.each( { name: "John", lang: "JS" }, function(i, n){ alert( "Name: " + i + ", Value: " + n ); });

$.map

$.map(array, fn):数组映射。把一个数组中的项目(处理转换后)保存到到另一个新数组中,并返回生成的新数组。 如:

var tempArr=$.map( [0,1,2], function(i){ return i + 4; });//[4,5,6] 
var tempArr=$.map( [0,1,2], function(i){ return i > 0 ? i + 1 : null; });//[2,3] 

$.merge

$.merge(arr1,arr2):合并两个数组并删除其中重复的项目。 如:

$.merge( [0,1,2], [2,3,4] ) //返回[0,1,2,3,4]

$.trim

$.trim(str):删除字符串两端的空白字符。 如:

$.trim(" hello, how are you? "); //返回"hello,how are you? "

JS 获取数组长度

var myarray = [1,2,3];
myarray.length // 初始的长度是3
myarray.length = 2; // 删除最后一个元素
myarray.length = 20 // 添加18个元素到数组中

JS 判断 undefined

if(typeof(value)=="undefined"){ 
    alert("undefined"); 
} 

JS join将数组转字符串

<input class="chcekInp" type="checkbox" name="nextDeal" value="zs"/>张三
<input class="chcekInp" type="checkbox" name="nextDeal" value="ls"/>李四
<input class="chcekInp" type="checkbox" name="nextDeal" value="we"/>王二
<input class="chcekInp" type="checkbox" name="nextDeal" value="sw"/>三五
<input class="chcekInp" type="checkbox" name="nextDeal" value="sl"/>四六

var chk_value =[]; 
$('input[name="nextDeal"]:checked').each(function(){ 
    chk_value.push($(this).val()); 
});
var userNames = chk_value.join(",");

JS 遮罩功能

HTML

<!--弹窗背景-->
<div class="flexBg" style="display: none;"></div>
<!--loading-->
<div class="loading" style="display: none;">
    <i></i>
    <p>加载中...</p>
    <%-- <img src="${baseURL}/images/loading.gif"></img> --%>
</div>

CSS

.flexBg {
    background: url(../images/flexBg.png);
    position: fixed;
    top: 0;
    left: 0;
    bottom: 0;
    right: 0;
    z-index: 999;
}
.loading {
    width: 100px;
    height: 100px;
    position: absolute;
    top: 50%;
    left: 50%;
    margin: -50px 0 0 -50px;
    z-index: 999;
    background: #fff;
    padding: 15px;
    border-radius: 5px;
}

JS

function sZZ(){
    $('.flexBg').show();
    $('.loading').show();
}
function hZZ(){
    $('.flexBg').hide();
    $('.loading').hide();
}

IMG



js中的encodeURI、decodeURI、decodeURIComponent,解决传值中文乱码

一、基本概念
encodeURI和decodeURI是成对来使用的,因为浏览器的地址栏有中文字符的话,可以会出现不可预期的错误,所以可以encodeURI把非英文字符转化为英文编码,decodeURI可以用来把字符还原回来。
encodeURI方法不会对下列字符进行编码:":"、"/"、";" 和 “?",encodeURIComponent方法可以对这些字符进行编码。

decodeURI()方法相当于java.net.URLDecoder.decode(URIString, “UTF-8”);
encodeURI()方法相当于java.net.URLEncoder.encode(URIString, “UTF-8”);
二、例子

window.location.href = encodeURI(encodeURI(jumpURL));
//http://127.0.0.1:8081/zsyx/jsp/component/demandwork/functiontest/functiontest.jsp?id=NEW20183123134021852&slink=%25E9%259C%2580%25E6%25B1%2582%25E5%25A4%2584%25E7%2590%2586

var slink = decodeURI(decodeURI('${param.slink}'));

JS判断文件是否存在

方法1:判断图片是否存在

function isHasImg(pathImg){  
    var ImgObj=new Image();  
    ImgObj.src= pathImg;  
    if(ImgObj.fileSize > 0 || (ImgObj.width > 0 && ImgObj.height > 0))  
    {  
    return true;  
    } else {  
    return false;  
    }  
}  

方法2:AJAX验证图片或文件链接是否存在

function validateImage(url) {      
var xmlHttp ;  
if (window.ActiveXObject)  
{  
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");  
}  
else if (window.XMLHttpRequest)  
{  
xmlHttp = new XMLHttpRequest();  
}   
xmlHttp.open("Get",url,false);  
xmlHttp.send();  
if(xmlHttp.status==404)  
return false;  
else  
return true;  
}  

方法3:用onerror替换不存在的图片

<img src="images/img1.jpg" height="300" width="800" onerror="images/defaultImg.jpg">  

解决自定义方法或其他类库与jQuery的冲突

//使用jquery中的jQuery.noConflict();方法即可把变量$的控制权让渡给第一个实现它的那个库或之前自定义的$方法。之后应用Jquery的时候只要将所有的$换成jQuery即可
jQuery.noConflict(); 
// 开始使用jQuery 
jQuery("div p").hide(); 
// 使用其他库的 $() 
$("content").style.display = 'none';

获取iframe中文档内容

function getIframeContent(){  //获取iframe中文档内容
    var doc;
    if (document.all){ // IE 
        doc = document.frames["ueditor_0"].document; 
    }else{ // 标准
        doc = document.getElementById("ueditor_0").contentDocument; 
    }
    return doc.body.innerHTML;
} 

子窗体调父窗体方法

父窗体

function selectProduct(commitBrand){	window.open("${baseURL}/jsp/component/selectlist/SelectProductList.jsp?ecs=ecs&productName=productName&brandId=brandId&brandName=brandName&specification=specification","选择产品",
        "width=1366,height=768,top=0,left=0,scrollbars=YES,resizable=yes");
}
function setProductValue(ecs,productName,brandId,brandNameDesc,guige,guigeDesc,color,colorDesc,productXinghao,productXinghaoDesc,haveImei,fundCost){
        $("#ecs").attr("value",ecs);
        $("#productName").attr("value",productName);
        $("#brandId").attr("value",brandId);
}

子窗体 SelectProductList.jsp

window.opener.setProductValue(content.ecs,content.productName,content.zhongduanPinpai,content.zhongduanPinpaiDesc,content.guige,content.guigeDesc,content.color,content.colorDesc,content.productXinghao,content.productXinghaoDesc,content.haveImei,content.fundCost);
window.close();

JQ AJAX请求demo

$(function() {
    $('#send').click(function() {
        $.ajax({
            type: "GET", //GET或POST,
            async:true, //默认设置为true,所有请求均为异步请求。
            url: "http://www.idaima.com/xxxxx.php",
            data: {
                username: $("#username").val(),
                content: $("#content").val()
            },
            dataType: "json", //xml、html、script、jsonp、text
            beforeSend:function(){},
            complete:function(){},
            success: function(data) {
                alert(data)
            },
            error:function(){},
        });
    });
});


$.get(baseURL+'/childorderdeal/childorderdealActAction!getWorkSati.action', { orderId: "NEW2018425164215552" }, function(data){
             if(data.code=="0"){
                 $('input:[value="'+data.data.code+'"]').attr('checked','true');
             }
        },'json');

JQ 设置AJAX同步

由于$.post() 和 $.get() 默认是 异步请求,如果需要同步请求,则可以进行如下使用:
在$.post()前把ajax设置为同步:$.ajaxSettings.async = false;
在$.post()后把ajax改回为异步:$.ajaxSettings.async = true;
如:

$.ajaxSettings.async = false;  
$.post("/finance/getLastTimeCard", data, function(result) {  
    // 请求处理  
},"json");  
$.ajaxSettings.async = true;  

页面刷新篇

1.刷新
reload 方法,该方法强迫浏览器刷新当前页面。
语法:location.reload([bForceGet])
参数: bForceGet, 可选参数, 默认为 false,从客户端缓存里取当前页。true, 则以 GET 方式,从服务端取最新的页面, 相当于客户端点击 F5(“刷新”)

replace 方法,该方法通过指定URL替换当前缓存在历史里(客户端)的项目,因此当使用replace方法之后,你不能通过“前进”和“后退”来访问已经被替换的URL。
语法: location.replace(URL)

在实际应用的时候,重新刷新页面的时候,我们通常使用: location.reload() 或者是 history.go(0) 来做。
因为这种做法就像是客户端点F5刷新页面,所以页面的method=“post"的时候,会出现"网页过期"的提示。那是因为Session的安全保护机制。
这里,location.replace() 就可以完成此任务。被replace的页面每次都在服务端重新生成。
你可以这么写: location.replace(location.href);

2.返回并刷新页面

location.replace(document.referrer); //document.referre为r前一个页面的URL

不要用 history.go(-1),或 history.back();来返回并刷新页面,这两种方法不会刷新页面。

Javascript刷新页面的几种方法

1 history.go(0)
2 location.reload()
3 location=location
4 location.assign(location)
5 document.execCommand(‘Refresh’)
6 window.navigate(location)
7 location.replace(location)
8 document.URL=location.href

自动刷新页面的方法

1.页面自动刷新:把如下代码加入区域中,20秒刷新一次页面.

<meta http-equiv="refresh" content="20">

2.页面自动跳转:把如下代码加入区域中,20秒后跳转到https://ianeiu.github.io/页面

<meta http-equiv="refresh" content="20;url=https://ianeiu.github.io/">

3.页面自动刷新js版

<script type="text/javascript"> 
    function myrefresh(){  window.location.reload(); }
    setTimeout('myrefresh()',1000); //指定1秒刷新一次
</script>

窗口刷新

1.JS刷新框架的脚本语句

//如何刷新包含该框架的页面用   
<script language=JavaScript>
   parent.location.reload();
</script>  

2.子窗口刷新父窗口

<script language=JavaScript>
    self.opener.location.reload();
</script>
//或 <a href="javascript:opener.location.reload()">刷新</a>

3.如何刷新另一个框架的页面用

<script language=JavaScript>
   parent.另一FrameID.location.reload();
</script>

4.如果想关闭窗口时刷新或者想开窗时刷新的话,在中调用以下语句即可。

<body onload="opener.location.reload()"> 开窗时刷新
<body onUnload="opener.location.reload()"> 关闭时刷新
<script language="javascript">
    window.opener.document.location.reload()
</script>

jQuery对象与dom对象

通过jquery的$()引用元素包括通过id、class、元素名以及元素的层级关系及dom或者xpath条件等方法,且返回的对象为jquery对象(集合对象),不能直接调用dom定义的方法。
转换
普通的dom对象一般可以通过$()转换成jquery对象。

$(document.getElementById("msg"))

由于jquery对象本身是一个集合。所以如果jquery对象要转换为dom对象则必须取出其中的某一项,一般可通过索引取出。

$("#msg")[0],
$("div").eq(1)[0],
$("div").get()[1],
$("td")[5]

$("#msg").html();
$("#msg")[0].innerHTML;
$("#msg").eq(0)[0].innerHTML;
$("#msg").get(0).innerHTML;

获取jQuery集合的某一项(获取第三个div元素的内容)

$("div").eq(2).html(); //调用jquery对象的方法
$("div").get(2).innerHTML; //调用dom的方法属性

form表单 注意点

  1. 查询页面,有绑定回车事件提交表单的,要在form中加上onsubmit=“return false;"。不然会出现回车查询时页面直接显示JSON数据了。
  2. 直接在form标签中加入属性accept-charset=‘UTF-8’,防止中文乱码。

js 截取字符串

去除字符串最后一位(进化版)

<SCRIPT type="text/javascript">
	function delfh(str){
		str=str.replace(",,",",");
		if(str.substring(str.length-1,str.length)==","){
			str2=str.substring(0,str.length-1);
			delfh(str2);
		}else{
			str2=str;
		}
		return str2;
	}
 
	var s2="1,,,2,,,,3,,,,4,54,454,,,,,,,,,,,,,,,,";
	var s="415929,415930,415931,415932,415933,415934,415935,415936,415937,415938,415939,415940,415941,415942,415943,415944,415945,415946,415947,415948,1,2,3";
	alert(delfh(s2));
</script>

元素上下居中

<style type="text/css">
.parent {
	display: flex;
	flex-direction: column;
	justify-content: center; /* 上下 */
	align-items: center; /* 水平 */
}
</style>

<div class="parent" style="height: 1000px; border: 1px solid #000">
    <div class="child" style="height: 500px; width: 100px; border: 1px solid #00f"></div>
</div>

检查IE

 /* 注意:不能使用较新的jquery */
    /* $.browser.msie在1.9以后的jquery中不存在了 */
    /* 2.0 版本中,将不再支持 IE 6/7/8 */
    $(function() {
    	 checkOne();
    	 checkTwo();
    });
    
    function checkOne(){
    	 var userAgent = window.navigator.userAgent.toLowerCase();
    	  
         $.browser.msie10 = $.browser.msie && /msie 10\.0/i.test(userAgent);
         $.browser.msie9 = $.browser.msie && /msie 9\.0/i.test(userAgent); 
         $.browser.msie8 = $.browser.msie && /msie 8\.0/i.test(userAgent);
         $.browser.msie7 = $.browser.msie && /msie 7\.0/i.test(userAgent);
         $.browser.msie6 = !$.browser.msie8 && !$.browser.msie7 && $.browser.msie && /msie 6\.0/i.test(userAgent);
   
         $(".info").html(
             "<h3>userAgent:</h3>" + userAgent + "<br />" +
             "<h3>Is IE 10?</h3>" + $.browser.msie10 +
             "<h3>Is IE 9?</h3>" + $.browser.msie9 +
             "<h3>Is IE 8?</h3>" + $.browser.msie8 +
             "<h3>Is IE 7?</h3>" + $.browser.msie7 +
             "<h3>Is IE 6?</h3>" + $.browser.msie6
         );
 		if($.browser.msie8){
 			alert('IE8真让人头疼!!');
 		}
    }
    
    //new 
    function checkTwo(){
    	$.browser.mozilla = /firefox/.test(navigator.userAgent.toLowerCase());
    	$.browser.webkit = /webkit/.test(navigator.userAgent.toLowerCase());
    	$.browser.opera = /opera/.test(navigator.userAgent.toLowerCase());
    	$.browser.msie = /msie/.test(navigator.userAgent.toLowerCase()); //判断是否是IE
    	
   	 	if(/msie/.test(navigator.userAgent.toLowerCase())){
   	    	console.log('IE5-10');
   	 	}
    	
		if ('undefined' == typeof (document.body.style.maxHeight)) {
			console.log('IE6');
		}
		
		if (!$.support.leadingWhitespace) {
			console.log('IE5-8');
		}
    }

文件上传限制

<div>
    <h3>限制文件类型上传及多文件上传</h3>
    <input id="moreFile" type="file" accept=".doc,.docx,.xls,.xlsx"
        multiple /> <input type="button" onclick="checkFile()" value="提交" />
</div>
<div>
    <h3>限制文件类型上传-显示限制</h3>
    <br />浏览时只显示指定文件类型 xls、xlsx、csv <input id="fileSelect" type="file"
        accept=".csv, application/vnd.openxmlformats-officedocument.spreadsheetml.sheet, application/vnd.ms-excel" />

    <br />
    <br />For CSV files (.csv), use: <br />
    <input type="file" accept=".csv" /> <br />
    <br />For Excel Files 2003-2007 (.xls), use: <br />
    <input type="file" accept="application/vnd.ms-excel" /> <br />
    <br />For Excel Files 2010 (.xlsx), use: <br />
    <input type="file" accept="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" />
    <br />
    <br />For Text Files (.txt) use: <br />
    <input type="file" accept="text/plain" /> <br />
    <br />For Image Files (.png/.jpg/etc), use: <br />
    <input type="file" accept="image/*" /> <br />
    <br />For HTML Files (.htm,.html), use: <br />
    <input type="file" accept="text/html" /> <br />
    <br />For Video Files (.avi, .mpg, .mpeg, .mp4), use: <br />
    <input type="file" accept="video/*" /> <br />
    <br />For Audio Files (.mp3, .wav, etc), use: <br />
    <input type="file" accept="audio/*" /> <br />
    <br />For PDF Files, use: <br />
    <input type="file" accept=".pdf" />
</div>
<script type="text/javascript">
	function checkFile(){
		var fileAccept = $("#moreFile").val().split(".")[1];//获取上传文件的后缀  
		if( fileAccept!="doc" && fileAccept!="docx"&& fileAccept!="xls"&& fileAccept!="xlsx" ){  
		    alert("只能上传.doc,.docx,.xls,.xlsx的文件!");  
		}  
		
		//获取多文件上传的所有文件名  
		var filePaths = $("#moreFile")[0].files;//或者这样写 document.getElementById("id").files;  
		for( var i=0;i<filePaths.length; i++ ){  
		    alert(filePaths[i].name);  
		}
	}
</script>

输入框input校验

<br />JS判断只能是数字和小数点 1.文本框只能输入数字代码(小数点也不能输入)
<br />
<input onkeyup="this.value=this.value.replace(/\D/g,'')" onafterpaste="this.value=this.value.replace(/\D/g,'')">
<br />
<br />2.只能输入数字,能输小数点.
<br />
<input onkeyup="if(isNaN(value))execCommand('undo')" onafterpaste="if(isNaN(value))execCommand('undo')">
<br />
<input name=txt1 onchange="if(/\D/.test(this.value)){alert('只能输入数字');this.value='';}">
<br />
<br />3.数字和小数点方法二
<br />
<input type=text t_value="" o_value=""
    onkeypress="if(!this.value.match(/^[\+\-]?\d*?\.?\d*?$/))this.value=this.t_value;else this.t_value=this.value;if(this.value.match(/^(?:[\+\-]?\d+(?:\.\d+)?)?$/))this.o_value=this.value"
    onkeyup="if(!this.value.match(/^[\+\-]?\d*?\.?\d*?$/))this.value=this.t_value;else this.t_value=this.value;if(this.value.match(/^(?:[\+\-]?\d+(?:\.\d+)?)?$/))this.o_value=this.value"
    onblur="if(!this.value.match(/^(?:[\+\-]?\d+(?:\.\d+)?|\.\d*?)?$/))this.value=this.o_value;else{if(this.value.match(/^\.\d+$/))this.value=0+this.value;if(this.value.match(/^\.$/))this.value=0;this.o_value=this.value}">
<br />
<br />4.只能输入字母和汉字
<br />
<input onkeyup="value=value.replace(/[\d]/g,'')" maxlength=10 name="Numbers"
    onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[\d]/g,''))">
<br />
<br />5.只能输入英文字母和数字,不能输入中文
<br />
<input onkeyup="value=value.replace(/[^\w\.\/]/ig,'')">
<br />
<br />6.只能输入数字和英文
<font color="Red">chun</font>
<br />
<input onKeyUp="value=value.replace(/[^\d|chun]/g,'')">
<br />
<br />7.小数点后只能有最多两位(数字,中文都可输入),不能输入字母和运算符号:
<br />
<input onKeyPress="if((event.keyCode<48 || event.keyCode>57) && event.keyCode!=46 || /\.\d\d$/.test(value))event.returnValue=false">
<br />
<br />8.小数点后只能有最多两位(数字,字母,中文都可输入),可以输入运算符号:
<br />
<input onkeyup="this.value=this.value.replace(/^(\-)*(\d+)\.(\d\d).*$/,'$1$2.$3')">

contenteditable 进行文本输入编辑

<p contenteditable="true">这是一段可编辑的段落。请试着编辑该文本。</p>

table 模版

<table class="tableCommon" width="30%" border="1" cellspacing="5" cellpadding="10">
    <thead style="display: block;">
        <tr>
            <th>1</th>
            <th>2</th>
            <th>3</th>
            <th>4</th>
        </tr>
    </thead>
    <tbody style="display: block; height: 50px; overflow-y: scroll;">
        <tr>
            <td>10</td>
            <td>20</td>
            <td>30</td>
            <td>40</td>
        </tr>
        <tr>
            <td>10</td>
            <td>20</td>
            <td>30</td>
            <td>40</td>
        </tr>
    </tbody>
</table>

append追加元素用法例子

<ul class="selectUserList"></ul>

<script type="text/javascript">
	$(function(){
		for(var i = 0;i<10;i++){
			addUser({id: i, userName: i+'a', name: i+'b',mobile: i*10});
		}
	})
	function addUser(data) {
	    var _li = $("<li></li>");//li
	    var _em = $("<em></em>");//li-em
	    var _a = $('<a class="closebtn" href="javascript:void(0);" onclick="closeBtnFunc(this)"></a>');//li-a
	    var _hiden_username = $('<input type="hidden" class="_hidenUsername"/>');//li-input name:_hidenUsername
	    var _hiden_tel = $('<input type="hidden" class="_hidenMobile"/>');//li-input name:_hiden_tel
	    
	    _hiden_username.val(data.userName);
	    _hiden_tel.val(data.mobile);
	    _em.text(data.userName + "(" + data.mobile + ")");
	    
	    _li.append(_em);
	    _li.append(_a);
	    _li.append(_hiden_username);
	    _li.append(_hiden_tel);
	    $(".selectUserList").append(_li);
	}
</script>

a标签 调用方法的正确姿势

<a href="javascript:xixi();">a1</a>
这是我们平台上常用的方法,但是这种方法在传递this等参数的时候很容易出问题,
而且javascript:协议作为a的href属性的时候不仅会导致不必要的触发window.onbeforeunload事件,
在IE里面更会使gif动画图片停止播放。
W3C标准不推荐在href里面执行javascript语句

<a href="javascript:void(0);" onclick="xixi()">a2</a>
这种方法是很多网站最常用的方法,也是最周全的方法,onclick方法负责执行js函数,
而void是一个操作符,void(0)返回undefined,地址不发生跳转。
而且这种方法不会像第一种方法一样直接将js方法暴露在浏览器的状态栏。

<a href="javascript:;" onclick="xixi()">a3</a>
这种方法跟跟2种类似,区别只是执行了一条空的js代码。

<a href="#" onclick="xixi()">a4</a>
这种方法也是网上很常见的代码,#是标签内置的一个方法,代表top的作用。
所以用这种方法点击后网页后返回到页面的最顶端。

<a href="#" onclick="xixi();return false">a5</a>
这种方法点击执行了js函数后return false,页面不发生跳转,执行后还是在页面的当前位置。

综合上述,在a中调用js函数最适当的方法推荐使用:

<a href="javascript:void(0);" onclick="xixi()">a2</a><br />
<a href="javascript:;" onclick="xixi()">a3</a><br />
<a href="#" onclick="xixi();return false">a5</a>

video h5播放视频不主动弹出

x5-playsinline=“true” playsinline=“true” webkit-playsinline=“true”

comments powered by Disqus