vbscript和asp.net的一些整理

1、前言

        因为工作中有涉及,因此就把一些常用的代码整理了一下。

2、vbscript

2.1、do while循环


Dim rs
do while not rs.Eof   'rs.eof表示结果集无法获取更多的数据即(End Of File),表示结果集遍历结束
	sManagerIDs=sManagerIDs&rs("PeopleID")&";"
	rs.moveNext
loop 

res=Split(sManagerIDs,";")

Dim rs
if not rs.Eof then
	sManagerIDs(0)=rs("ApproverID")
end if

 2.2、split分割字符串

'arrManagers是一个数组,用数组去接收被分割的字符串的各个部分(按“;”分割字符串为数组)
arrManagers=Split(sManagerIDs,";")

2.3、数组

'获取数组的最大下标(从0开始)
ubound(arrFields)


'定义一个数组
Dim arrManagerIDs()
在使用的时候,再重定义一下数组的大小
ReDim arrManagerIDs(1)
'ReDim 的作用是重新分配数组空间 默认情况下重新分配空间后数组内容都会清空,加上preserve后可以保留原来的数据在进行分配空间。    
ReDim Preserve arrManagerIDs(2)


'判断数组是否为空
if IsArray(arrManagerIDs) then
...
end if


'遍历数组
for i=0 to UBound(arrContent)
	response.write arrContent(i)
next

'1为获取行数、2为获取列数
'获取二维数组某一行有多少行
response.Write UBound(arrGroup,1)&"<br/>" 

'获取二维数组某一行有多少列
response.Write UBound(arrGroup,2)&"<br/>" 

2.4、数据库操作

'一个简单的update
Public Function UpdateXXXTime(idApply,dtBegin,dtEnd)
	Dim cn,cmd,sSQL
	Set cn = CreateObject("ADODB.Connection")
	cn.Open CS_RW
	Set cmd = CreateObject("ADODB.Command")
	cmd.ActiveConnection = cn
	sSQL="Update TPlan Set Begin=?,End=? where  id="& utdb.EncodeN(idApply)
	cmd.Parameters(0)=dtBegin
	cmd.Parameters(1)= dtEnd
	Set UpdateXXXTime= cmd.Execute()
End Function


'一个简单的select
function GetXXXApplyAmount(idApply)
    dim cn,sSQL
    sSQL="select * from TApply where id="& utdb.EncodeN(idApply)
	Set cn = CreateObject("ADODB.Connection")
	cn.Open CS_RS
	'response.write sSQL
	Set GetXXXApplyAmount= cn.Execute(sSQL)
end function


'一个简单的add,add成功后返回该条记录的主键
Public Function AddCandidate(idPeople,iType,iResumeType)
	dim cn,cmd,rs,sSQL
	dim j
	sSQL="INSERT INTO TCandidate(PeopleID,Type,ResumeType) values(?,?,?);SELECT SCOPE_IDENTITY() AS [Identity]"
	Set cn = CreateObject("ADODB.Connection")
	cn.Open CS_RW
	Set cmd = CreateObject("ADODB.Command")
	cmd.ActiveConnection = cn
	cmd.CommandText=sSQL
	j=-1
    j=j+1 : cmd.Parameters(j)= idPeople
	j=j+1 : cmd.Parameters(j)= iType
	j=j+1 : cmd.Parameters(j)= iResumeType

	Set rs = CreateObject("ADODB.Recordset")
	set rs = cmd.Execute()
	AddCandidate= CLng(rs("Identity"))
	rs.Close
	Set rs = nothing
	cn.close
	Set cn = nothing
End Function

2.5、日期

'当前时间+180天
Response.write "当前时间:"&DateAdd("d",180,Now)
'当前时间+15天是否等于"2022/3/17"
Response.Write "时间:"&(DateAdd("d",15,Date)="2022/3/17")


dim date1,date2
date1 = "2010-02-02"
date2 = "2009-01-01"
Response.write "日期比较大小:"&(datevalue(date1)<datevalue(date2))
Response.write "日期差:"&DateDiff("d",date,"2022/03/19")

2.6、类型转换及计算

'获取字符串中的数字
dim str,tmpChar,tmpItem
str="增值税专用发票17%"
for i=1 to len(str)
    tmpChar= Mid(str,i,1)
    if IsNumeric(tmpChar) then
        tmpItem=tmpItem&tmpChar
     end if
next
response.write tmpItem    '会输出17

response.write FormatNumber(100*(17/100),2)

'true表示数字带0,即:0.1,否则是.1
'字符串转换为双精度值,同类函数有CLNG,CINT等
iAmountRemain=FormatNumber(cdbl(iAmountRemain)-cdbl(rs3("XXXFeeSum")),2,true)


'把字符串转为boolean类型
if CBool(Request("IsNotifyXXX")) = True then
...
end if

 2.7、vbs后端拼接html

'vbs后端拼接html
sContent="<html><head><meta http-equiv=""Content-Type"" content=""text/html; charset=gb2312""></head><body>"
sContent=sContent&"<a  target='_blank' href='" & utilXXX.GetRootUrl(3) & "/XXX/YYY/ZZZ/Content.asp?ID="&rs("ID")&"'>XXX申请#"&rs("ID")&"即将到期"&"</ a>"&"</body></html>"

2.8、动态重定向传递多个参数

Response.Redirect "AAAContent.asp?ApplyID="&idApply&"&status=submited"

2.9、判断字符串中是否包含某个字符

Response.write InStr(1,"上海华力有限公司","华为")

2.10、Cookie操作

'设置Cookie的值
Response.Cookies("PPCookie") = "agree"

'设置Cookie过期时间为10个月
Response.Cookies("PPCookie").expires=dateadd("M",10,now())

'设置Cookie过期时间为10分钟
Response.Cookies("PPCookie").expires=dateadd("n",10,now())

'获取Cookie的值
Response.write  Request.Cookies("PPCookie")

2.11、Session操作

'获取Session
response.write Session.Contents.Item("CandidateID")

'设置Session的值
Session.Contents.Item("CandidateID")="123"

2.12、判断是不是数字

if isnumeric(Request("iPOCount")) then
	iPOxxCount=Request("iPOCount")
else
	iPOxxCount=0
end if

2.13、取不大于某个数字的最近整数

Response.write Int(cdbl(1.2))


输出结果为:1

2.14、去除字符串数组最左边的字符

'arrsPOD(i)=right(join(arrsUNew,","),len(join(arrsUNew,","))-1)

'去除数组第一个元素第一个字符
arrsUNew=Array("Sun","Mon","Tue","Wed","Thu","Fri","Sat")
sstr=right(join(arrsUNew,","),len(join(arrsUNew,","))-1)
response.write sstr    '输出:un,Mon,Tue,Wed,Thu,Fri,Sat

2.15、数组去重

'arrsU为原数组,arrsUNew为去重后的数组
arrsU=Array("Sun","Mon","Tue","Wed","Thu","Fri","Sat","Wed","Wed1","Mon")
i1=0
j=0
k=0
flag=1
redim arrsUNew(k)
for i1=0 to UBound(arrsU)
    flag=1
    for j=0 to UBound(arrsUNew)
        if arrsUNew(j)=arrsU(i1) then
            flag=0	
        end if
    next
    if flag=1 then
        k=k+1
        redim preserve arrsUNew(k)
        arrsUNew(k)=arrsU(i1)
    end if
next
for i=0 to UBound(arrsUNew)
    Response.write arrsUNew(i)&","
next

2.16、VBS获取文件名后缀

FileName="myfile.xls"
fileType = Right(FileName,Len(FileName)-InStrRev(FileName,"."))
Response.write "fileType="&fileType&"<br/>"

2.17、返回字符串中某个字符第一次出现的位置

str=22.0
InStr(str,".")  //"."从左到右第一次出现的位置
InStrRev(str,".")  //"."从右到左第一次出现的位置

2.18、大小写转换

str=LCase("ABC)  //大写转小写

str=UCase("abc")  //小写转大写

2.19、ByRef

        vb中ByRef相当C语言中的指针,用来传递地址。

function AAA(ByRef str)
    str=str+" world"
end function

function BBB()
    dim str
    str="hello"
    Call AAA(str)
    response.write str   '会输出hello world
end function

Call BBB()    '会输出hello world

2.20、vbs在“空格”和“Tab”的问题

'同时去除中间"空格"和中间"TAB"   Chr(9)表示“Tab键”
sXXNumber = Replace(Replace(Request("sXXNumber "),Chr(9),"")," ","")

2.21、数组转为字符串 join

arrSign=Array("Sun","Mon","Tue","Wed","Thu","Fri","Sat","Wed","Wed1","Mon")
Response.write join(arrSign,",")    '输出的是一个字符串

2.21、vbs解析json

<%
Set oJSON = New aspJSON

'Load JSON string
oJSON.loadJSON(jsonstring)

'Get single value
Response.Write oJSON.data("firstName") & "<br>"
Response.Write oJSON.data("address").item("streetAddress") & "<br>"

'Loop through collection
For Each phonenr In oJSON.data("phoneNumbers")
    Set this = oJSON.data("phoneNumbers").item(phonenr)
    Response.Write _
    this.item("type") & ": " & _
    this.item("number") & "<br>"
Next

'Update/Add value
oJSON.data("firstName") = "James"

'Return json string
Response.Write oJSON.JSONoutput()
%>

2.22、vbs去除文件名后缀

sfile="AAA.txtx"
Response.write Left(sfile,InStrRev(sfile,".")-1)&"<br/>"

2.23、vbs统计字符串中某个字符出现的次数 

'根据html中的<tr>标签统计总行数
dim arrColumn,iTotalColumn
iTotalColumn=0
arrColumn=Split(arrDetail(1,i),"</tr>")
iTotalColumn=UBound(arrColumn)

2.24、vbs把数字转为千分位格式

Response.write FormatNumber(123456,0)

Response.write FormatNumber(123456789.122)

 

2.25、switch case(select case)

select case i
    case 5
        bNeed = bNeedApprover2Sign
    case 6
        bNeed = bNeedApprover3Sign
    case 7
        bNeed = bNeedApprover4Sign
    case 9
        bNeed = bNeedSpecialSign
    case else
        bNeed = true
end select

2.26、for循环

for i=0 to UBound(arrStep)
	Response.write arrStep(i)&";"
next

for i=0 to UBound(arrStep)
	if arrStep(i)=2 then
        exit for
    end if
next

2.27、去除字符串中的回车和换行

Replace(Replace(sMemo,vbCr, ""), vbLf, "")    'vbcr是回车符,vbLf是换行符

2.28、设置输出编码

Response.Charset="GB2312"

2.29、vbscript代码换行

        换行的地方要加下划线_,如果不加下划线直接代码换行,会报编译错误的

Public Function AddXXX(param1,param2,param3,param4,param5,param6,param7,param8,param9,_
param10,param11,param12,param13,param14,param15,param16,param17)

2.30、二维数组定义

n=-1:Redim Preserve arr(3,n)

n=n+1:Redim Preserve arr(3,n)

for i=0 to 6
    n=n+1:Redim Preserve arr(3,n)    '注意:Vbs中的二维数组只能列数动态增加,但行数必须是固定的
    arr(0,n)=12
    arr(1,n)="hhh"&i
    arr(2,n)=0
    arr(3,n)=1
next

for i=0 to UBound(arr,2)  'UBound(arr,1)行数,   UBound(arr,2)列数
    Response.write arr(0,i)&"~"&arr(1,i)&"~"&arr(2,i)&"~"&arr(3,i)&"<br/>"
next

2.31、vbscript获取页面url

<%
Response.Charset="gb2312"
host  =  request.servervariables("server_name")
path  =  request.servervariables("script_name")
qstring  =  Request.ServerVariables("QUERY_STRING")
if  qstring = ""   then
  Url  =   " http:// " & host & path
 else
  Url  =   " http:// " & host & path  +   " ? "   +  qstring
 end   if  
GetRawUrl  =  Url
Response.write "GetRawUrl="&GetRawUrl
%>

获取当前页面的Url_vbscript获取当前完整url-CSDN博客

2.32、Scripting.Dictionary

        vbscript中的Scripting.Dictionary类似于java中的map,包含key value结构

Set dictDataRest = CreateObject("Scripting.Dictionary")
Call dictDataRest.Add("key1","val1")
Call dictDataRest.Add("key2","val2")
Call dictDataRest.Add("key3","val3")
for each k in dictDataRest.keys
   response.write "k="&k&"--"&dictDataRest.Item(k)&"<br/>"
next

Dictionary 对象 | Microsoft Learn

3、asp

        jquery函数要加$(function

 $(function () {
        $("#btn_agree").click(function(){
        $("#frmPolicy").attr("action", "LoginForm.asp");
        $("#frmPolicy").submit();
    })
 });


Response.Write Request.form&"<br/>"
Response.Write Request.form.Count&"<br/>"

3.1、jquery控制radiobutton是否被选中

//jquery控制radiobutton是否被选中
$("#XXXType0").attr("checked","checked");
$("#XXXType1").attr("checked",false);


//判断checkbox是否被选中
$("#test1").prop("checked")和$("#test1").is(":checked")

if($("#CkAgree").prop("checked") ==true){
    xxx
}

3.2、 js获取form表单中的元素

<script type="text/javascript">
    window.onload = function() { 
        jquery获取form
        var objFrm = document.all("frmEdit");
        var objFrm = document.all.frmEdit;
        alert(objFrm.txt.value)
	}
</script>


<form name="frmEdit">
    <input type="text" id="txt" value="123456" />
</form>

3.3、 页面初始化执行js函数

<script type="text/javascript">

    window.onload = function() {  //页面初始化执行js函数
        $("#IsNotifyXXX").attr('checked','checked');  //设置checkbox被选中
        $("#EmailInputXXX").show();
	}

</script>

<script type="text/javascript">
    window.onload = function() {  //页面初始化执行js函数
    //异步向其他页面传参
        $.ajax({
                url:"/AAA/BBB/info.asp",
                type:"post",
                data:{
                    "ID":xxx,
                    "State1":$("#xxx").val(),
                    "State2":$("#yyy").val()
                },
                dataType:"html",
                success:function(html){
                    $("#spanDIV").html(html)
                },
                error: function(xml, err) {
                    alert(err);
                }
            })
    }
</script>

<div id="spanDIV"></div>

3.4、根据name获取控件的值  20240117

//通过name获取值
alert($("[name='XXXType']").val())

//通过name获取radio取值
console.log($("[name='XXXType']:checked").val())



console.log(document.getElementsByName('XXXNo'+(i+1))[0].value)

3.5、 ajax

$("#btnRefresh").click(function(){
		$.ajax({
			type:'post',
			url: '/GetContract.asp',
			data: {ContractID:$("#ContractID").val()},
			dataType: "json"
		}).success(function(data){
			alert(data);
		})
	});




$("#btnRefresh").click(function(){
		$.ajax({
			type:'post',
			url: '/GetContractJSON.asp',
			data: {ContractID:$("#ContractID").val()},
			dataType: "json"
		}).success(function(data){
			$("#ContractNo").val(data.no)   //val()给控件赋值
			$("#ContractAmount").val(data.amount);		
		})
	});

<%
'GetContract.asp
Response.Charset="gb2312"  
idContract=1234567
%>

<%=idContract%>
<% 
'GetContractJSON.asp
response.CharSet = "gb2312"
%>
{
    "no":"<%=123456%>",
	"amount":"<%=1500%>"
}

3.6、checkbox 选中和不选中的值分别设置

<!--checkbox 选中和不选中的值分别设置-->
<td><input type="checkbox" name="IsNotifyClient" id="IsNotifyClient" onclick="this.value=(this.value=='uncheck')?'checked':'uncheck'"/>发送邮件通知客户</td>

	

<!--选中则显示EmailXXXField,否则隐藏EmailXXXField-->
<script type="text/javascript">
    $("#IsNotifyClient").change(function(){
		var bIsNotifyClient=$("#IsNotifyClient").val();
		if(bIsNotifyClient=="checked"){
			$("#EmailXXXField").show();	
		}
		else{
			$("#EmailXXXField").hide();
		}
	})
</script>

 3.7、去掉url后面的指定参数

var url = window.location.href;
	if(url.indexOf("IsSendOut")!=-1){
		url = url.replace("&IsSendOut=1","");    //去掉&IsSendOut=1
		window.history.pushState({}, 0, url);
		//window.location.reload() 
	}

可参考:js去掉浏览器地址后面指定的参数_码上敲享录的博客-CSDN博客_js去除url后面的参数 

3.8、html中空格

&nbsp;(不换行空格)

&ensp;(半角空格)

&emsp;(全角空格)

&thinsp;(窄空格)

&zwnj;(零宽不连字)

&zwnj;(零宽不连字)

3.9、$(this)

        $(this)用于指代当前的控件对象。

<script type="text/javascript" src="./js/jquery.min.js"></script>
<script type="text/javascript">
    $(function() {
        $("#btnTestId").click(function(){
            console.log($(this).val());
            console.log($(this).text());
            console.log($(this).attr('id'));
            console.log($(this).attr('name'));
        });
    });
</script>

<button type="button" id="btnTestId" name="btnTestName" value="这是一个测试按钮">测试按钮

3.10、显示&隐藏

//隐藏
$("#btnXXXAdd").hide();
document.getElementById('btnXXXAdd').style.display="none";
$("#btnXXXAdd").css("visibility","hidden");

//显示
$("#btnXXXAdd").show();
document.getElementById('btnXXXAdd').style.display="display";
$("#btnXXXAdd").css("visibility","visible")

//获取显示/隐藏状态
var flag = $("#btnXXXAdd").css("visibility")

<input type="text" id="txt1" value="visibility" style="visibility: hidden;"/>
<input type="text" id="txt2" value="display" style="display: none;"/>

3.11、判断选项是否被隐藏

//判断选项是否是隐藏?只有没被隐藏的选项才能被选中
if( $("#ItemID" + i).css('display')!='none'){
    $("#ItemID" + i).attr("checked", true)
}

//判断选项是否是隐藏?只有没被隐藏的选项才能被选中
if( !$("#ItemID" + i).is(":hidden")){
    $("#ItemID" + i).attr("checked", true)
}

   可参考:jquery判断元素是否隐藏的多种方法 - 蓝蓝设计_UI设计公司 (lanlanwork.com)

3.12、js跳转至其他页面

location.href='xxxForm.asp'

location.href="URL"
//或者
location.replace("URL")
//或者
location.assign("URL")

//在本页面打开
window.location.href='xxx.asp';

//在新页面打开
window.open('xxx.asp');

3.13、js获取文件名及其后缀

//取文件名
<input type="file" id="uploadFileForm" name="uploadFileForm"/>
 var fileName=$("#uploadFileForm").val();
 var res=fileName.split("\\");
var name=res[res.length-1]

//只获取后缀
var suffix = name.match(/[^.]+$/)[0];


 $(function () {
        $("#uploadFileForm").change(function(){
            var fileName=$("#uploadFileForm").val();
            var res=fileName.split("\\");
            var name=res[res.length-1]
            var fileType="pdf,xlsx,docx"
            var suffix = name.match(/[^.]+$/)[0];//txt
            console.log(suffix);
            console.log(fileType.)
        })
    });

3.14、js禁用按钮

//禁用按钮方式一
$("#btnRead").attr("disabled","disabled");
$("#btnRead").removeAttr("disabled");
 
//禁用按钮方式二
$("#btnRead").attr("disabled",true);
$("#btnRead").attr("disabled",false);
 
//禁用按钮方式三(不建议使用,部分环境解除禁用会失效)
$("#btnRead").attr("disabled","disabled");
$("#btnRead").attr("disabled","");
 
//禁用按钮方式一(多个值)
$("#btnRead").attr({"disabled":true,"readonly":true});
$("#btnRead").attr({"disabled":false,"readonly":false});
 
//禁用按钮方式二(多个值)
$("#btnRead").attr({"disabled":"disabled","readonly":"readonly"});
$("#btnRead").removeAttr("disabled readonly");

<button type="button" id="btnRead" name="btnRead">测试按钮</button>

3.15、判断字符串中是否包含某个字符

 if(sLineNumber.indexOf(".")==-1){    //判断是否包含"."
    ...
 }

3.16、jquery改变控件class属性

$("#btnCanCopy").change(function(){
    if($(this).attr("checked")=="checked"){  //电子版
        $("#CustosID").removeClass("validate[required]");
        $(this).val(0);
    }
    else{  //纸质版
        $("#CustosID").addClass("validate[required]");
        $(this).val(1);
    }        
});

<input type="hidden" id="CustosID" name="CustosID" class="my_InputField_Person" data-nullstring="[请选择]" value="<%=idCustos%>"/>

3.16、判断至少勾选了一个checkbox

$("[name='btnDelete']").click(function () {
    if (confirm('是否取消选中的xxx')) {
        if ($("input:checkbox[name='SelectOpt']:checked").length>0){
            $("#frmContent").attr("action","CancelXXX.asp");
            $("#frmContent").submit();
        }
        else{
            alert("请至少勾选一项")
        }			
    };
});

<td><input type="CheckBox" name="SelectOpt" value="<%=arrMixed(i,13)%>"></td>

3.17、jquery实现点击一个按钮就打开一个自定义弹窗页面

方法一、web网页弹窗

$("#btnFileUpload").click(function () {
	window.open ('/FileUploadForm.asp?UploadFileId=123&BillID=<%=idBill%>&RtnUrl=<%=Request.ServerVariables("SCRIPT_NAME")%>','newwindow', 'height=600, width=1200, top=0,left=0, toolbar=no, menubar=no, scrollbars=no, resizable=no,location=no, status=no');
});

方法二、dialog弹窗

$("#btnImport").click(function(){
    $("#div_SelectInvoice").html("");
    $("#div_SelectInvoice").dialog({ height: 600, width: 1200, modal: true, title: "请选择发票" })
    $.ajax({
        url: "/InvoiceDialog.asp?BillID="+<%=idBill%>,
        data: {  },
        dataType: "html",
        success: function (data) {
            $("#div_SelectInvoice").html(data)
            $("#div_Select123").dialog("close"); //关闭指定弹窗
        }
    });
});

3.18、父页面获取子页面的返回值

//父页面,要弹窗的子页面为ImportInvoiceDialog.asp
<script type="text/javascript">
    $(document).ready(function() {
        $("#btnImport").click(function(){
            wd=window.open ("ImportInvoiceDialog.asp?BillID="+<%=idBill%>+"&Type=UploadInvoice", "newwindow", "height=600, width=1200, toolbar=no, menubar=no, scrollbars=no, resizable=no, location=no, status=no") 
            if (wd) {
                window.wd.focus();//判断窗口是否打开,如果打开,窗口前置  
                winTimer=window.setInterval("wisclosed()",500);  //监听窗口关闭
            } 
            
        });

    });

	function wisclosed(){
		if(wd.closed){  
			alert(window.returnVaule);//子窗体返回值  
			//这里可以做赋值操作  
			window.clearInterval(winTimer);  
		}
	}
</script>


//注意button一定要加type="button",如果不加type的话就会默认是submit,点击按钮就会刷新父页面了,因为要监听,所以不能刷新父页面
<button type="button" class="btn btn-info" id="btnImport" name="btnImport">批量导入发票</button>


//子页面为ImportInvoiceDialog.asp
$("#btnOK").click(function () {
    var sChkSelDetail = "";
    $('input:checkbox[name=chkSelDetail]:checked').each(function (i) {
        if (0 == i) {
            sChkSelDetail = $(this).val();
        } else {
            sChkSelDetail += ("," + $(this).val());
        }
    });

    window.opener.window.returnVaule=sChkSelDetail;  //子页面返回值
    parent.window.close(); 
});

可参考:window.open返回值实例详解(子窗口向父窗口回显)_js中window.open的返回值-CSDN博客 

3.19、Jquery根据name取得所有选中的Checkbox值

$("#btnOK").click(function () {
    var sChkSelDetail = "";
    $('input:checkbox[name=chkSelDetail]:checked').each(function (i) {
        if (0 == i) {
            sChkSelDetail = $(this).val();
        } else {
            sChkSelDetail += ("," + $(this).val());
        }
    });
    //window.opener.window.returnVaule=sChkSelDetail;  
    //parent.window.close(); 
});

3.20、刷新弹窗dialog中的<div>

$("#btnBack").click(function(){
    $("#div_ShowInvoice").html("")
    $.ajax({
        url: "/ImportInvoiceDialog.asp?BillID="+<%=idBill%>+"&Type=UploadInvoice",
        data: {  },
        dataType: "html",
        success: function (data) {
            if($("#div_Form").length>1){    //如果div_Form弹窗已经打开了,则关闭div_Form
				$("#div_Form").dialog("close");    //关闭dialog
			}
            $("#div_ShowInvoice").html(data)
        }
    });
});


<div id="div_Form"></div>
<div id="div_ShowInvoice"></div>

3.21、遍历<select>下拉框中的所有元素

var obj=$("#selGroup").get(0);
for(var i = 0; i < obj.options.length; i++){
    console.log(obj.options[i].value)
};


<select name="GroupID" id="selGroup">
    <option value="">[请选择]</option>
    <option value="1">总公司</option>
    <option value="2">公司A</option>
    <option value="3">公司B</option>
    <option value="4">公司C</option>
    <option value="5">公司D</option>
    <option value="6">公司E</option>
    <option value="7">公司F</option>
</select>

3.22、多选下拉框组件select2(select2-container select2-container-multi)

前端插件之Select2使用 - ops-coffee - 博客园 (cnblogs.com)

3.23、jquery刷新页面 自动滑动到页面某一位置

//刷新页面后自动定位到当前步骤的位置
$("html, body").scrollTop(0).animate({scrollTop: $("#step-icon-txt<%=iStepNum-1%>").offset().top});

可参考:jquery刷新页面 自动滑动到页面某一位置_jq 刷新回滚到当前位置-CSDN博客 

3.24、js截取某个字符后面的字符串

let str ="2021-04";
let index = str.indexOf("-");
let result = str.substr(index + 1,str.length);   //04

3.25、jquery获取一组checkbox选中的值

<body>
    <script type="text/javascript">
        $(document).ready(function() {
            $("#btnExport").click(function() {
                var ck_array=new Array();
                $('input[name="ck"]:checked').each(function(){  
                    //ck_array.push($(this).val());	//获取选中checkbox的值
                    ck_array.push($(this).attr('id'));	//获取选中checkbox的id
                });  
                var idstr=ck_array.join(',');//将数组元素连接起来以构建一个字符串  
                alert(idstr); 
            });
            
            
        });
    </script>

    <button name="btnExport" id="btnExport" class="btn">导出</button>
    <input type="checkbox" id="ck1" name="ck"/>ck1
    <input type="checkbox" id="ck2" name="ck"/>ck2
    <input type="checkbox" id="ck3" name="ck"/>ck3
    <input type="checkbox" id="ck4" name="ck"/>ck4
    <input type="checkbox" id="ck5" name="ck"/>ck5
    <input type="checkbox" id="ck6" name="ck"/>ck6
    <div id="div1">
        
    </div>
</body>

3.26、checkbox全选和取消全选

$("#selectAll").click(function(){
    //console.log("hhh")
    if($(this).attr('checked')){
        $('input[name="select"]:not(:checked)').each(function(){	//获取所有未选中的checkbox
            //console.log($(this).attr('id'))
            $("#"+$(this).attr('id')).attr('checked',true);
        });
    }else{
        $('input[name="select"]:checked').each(function(){	//获取所有选中的checkbox
            //console.log($(this).attr('id'))
            $("#"+$(this).attr('id')).attr('checked',false);
        });
    } 
})

3.27、<input />限制输入

<!--只允许输入数字(整数:小数点不能输入)-->
<input type="text" onkeyup="value=value.replace(/[^\d]/g,'')" />
<!--允许输入小数(两位小数)-->
<input type="text" onkeyup="value=value.replace(/^\D*(\d*(?:\.\d{0,2})?).*$/g, '$1')" />
<!--允许输入小数(一位小数)-->
<input type="text" onkeyup="value=value.replace(/^\D*(\d*(?:\.\d{0,1})?).*$/g, '$1')" />
<!--开头不能为0,且不能输入小数-->
<input type="text" onkeyup="value=value.replace(/[^\d]/g,'').replace(/^0{1,}/g,'')" />

输入框input只能输入数字和小数点 - PromiseOne - 博客园 (cnblogs.com)

3.28、jquery获取字符串中数字

var ckId1="wqeqw500sss200";
console.log(ckId1.replace(/[^0-9]/g, ""));
console.log(ckId1.match(/\d+/));	//只获取字符串第一个数字
console.log(ckId1.match(/\d+/g));	//获取字符串所有数字

jQuery 获取字符串中的数字_jq提取字符串中的数字-CSDN博客

3.29、js定义二维数组

var arr=new Array();  
for(var i=0;i<arrExpenseRecordId.length;i++){
	arr[i]=new Array();
	for(var j=0;j<3;j++){
		arr[i][0]=i;
		arr[i][1]="您好";
		arr[i][2]="您好";
	}
}

3.30、jquery遍历table

//方法一
var table=document.getElementById("MyTable");
var rows=table.rows.length; //获取table行数(包括表头行)
var rowCount = $('#myTable tr').length;

//遍历table的每一行与每一列
$("#MyTable tr").each(function(x){
    $(this).children("td").each(function(y){
		console.log($(this).html().trim());
	});
});	


//方法二
var table=document.getElementById("tablexxx");
var rows=table.getElementsByTagName("tr");
for(var j=1;j<rows.length;j++){
	var trId=rows[j].id;    //获取每行<tr>的id
    //获取每行<tr>的每个<td>
	var td0=$("#"+trId).children("td")[0];
    var td1=$("#"+trId).children("td")[1];
...
}

3.31、jquery删除table中行<tr>

$("#tableXXX tr").each(function(x){
	if(x>0){    //x=0为表头,这里只删除<tr>,不删除<th>
		$(this).remove();
	}
});

 3.32、js数组去重

//数组去重
function removeDuplicate(arr) {
	let len = arr.length
	for (let i = 0; i < len; i++) {
		for (let j = i + 1; j < len; j++) {
		    if (arr[i] === arr[j]) {
			    arr.splice(j, 1)
			    len-- // 减少循环次数提高性能
			    j-- // 保证j的值自加后不变
		    }
	    }
     }
	return arr
}

3.33、jquery统计name相同的控件的数量

var chkSelDetail_length = $("[name='chkSelDetail']").length;
console.log("chkSelDetail_length",chkSelDetail_length);

3.34、js异步

window.onload=function(){
    //先执行AAA(),只有等AAA()执行完成了,才会去执行BBB()。如果不这样写的话,
    //AAA(),BBB()会同时执行相互干扰
	let p = new Promise((resolve,reject) => {
		console.log("promise本身是同步");
        resolve("then是异步");
		//resolve();
		AAA();
	}).then((res) => {
		console.log(res);
		BBB();
	});
}

3.35、jquery-ui的dialog弹窗右上角的叉消失

 情况一、图标文件缺失

 jquery-ui的dialog中的右上角的“叉”其实就是一个图标,jquery-ui会自带一个images的文件夹里面存放图标png。

会在jquery-ui.css里面用到,因此首先要判断有没有这个images文件夹。没有的话则要加上。

情况二、与其他文件比如bootstrap.js冲突导致图标没有加载出来

        直接手动改jquery-ui.css里面的.ui-dialog .ui-dialog-titlebar-close类,把图标地址手动加上就行了。因为jquery-ui.css里面默认是全局加的,有时候会被冲突掉,因此就再手动一个个加上去。

3.36、table中 td th内容不换行

<th nowrap>23333333333333333333<th>  <!--有时候会失效-->
<th style="white-space:nowrap;">23333333333333333333</th>  <!--建议用这种不换行方式-->

3.37、document插入html

<script>
     window.onload = function (){
         document.getElementById("emailContent").insertAdjacentHTML("beforebegin","<p>邮件</p>");
         if (true){
             document.getElementById("emailContent").insertAdjacentHTML("afterbegin",
             "<br/><p>邮件信息如下:</p>"+
             "<table border='1px'>"+
                 "<tr>"+
                     "<th>AAA</th>"+
                     "<th>BBB</th>"+
                     "<th>CCC</th>"+
                     "<th>DDD</th>"+
                     "<th>EEE</th>"+
                 "</tr>"+
                 "<tr>"+
                     "<td>aaa</td>"+
                     "<td>bbb</td>"+
                     "<td>ccc</td>"+
                     "<td>ddd</td>"+
                     "<td>eee</td>"+
                 "</tr>"+
             "</table>"+
             "<p>FFF:</p>"+
             "<table border='1px'>"+
                 "<tr>"+
                     "<th>GGG</th>"+
                     "<td>1231231</td>"+
                 "</tr>"+
                 "<tr>"+
                     "<th>HHH</th>"+
                     "<td>RMB 1,500.00</td>"+
                 "</tr>"+
                 "<tr>"+
                     "<th>III</th>"+
                     "<td>#355541 <a href='https://www.123.test.asp?ApplyId=355541'>查看详情</a></td>"+
                 "</tr>"+
                 "<tr>"+
                     "<th>JJJ</th>"+
                     "<td>6.67%</td>"+
                 "</tr>"+
             "</table>"+
             "<p>下载地址:</p><a href='https://www.123.test.asp?FileID=773224'>SG2309001.pdf</a>&nbsp;"
             
             )
         }
         else{
              document.getElementById("emailContent").insertAdjacentHTML("afterbegin",
                 "<br/>AAA:1231231"+
                 "<br/>BBB:"+
                 "<br/>CCC:11122"+
                 "<br/>DDD:SGD 100.00"+
                 "<br/>EEE:SG/2309001"+
                 "<br/>FFF:13%"+
                 "<br/>附件下载地址:<a href='https://123.test.asp?FileID=773224'>SG2309001.pdf</a>&nbsp;"
             )
         }
     }
 </script>
 
 
 <div id="emailContent"></div>

3.38、jquery表单必填项验证

        可以使用jQuery Validation Engine

GitHub - posabsolute/jQuery-Validation-Engine: jQuery form validation plugin

Validation Engine 表单验证 - 桃子七号 - 博客园 (cnblogs.com)

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8" />
		<title></title>
	</head>
	<script type="text/javascript" src="./js/jquery.min.js"></script>
	<script type="text/javascript" src="./js/jquery.validationEngine.js"></script>
	<script type="text/javascript" src="./js/jquery.validationEngine-zh_CN.js"></script>
	<link rel="stylesheet" type="text/css" href="./css/validationEngine.jquery.css" />
	<body>
		<script type="text/javascript">
			$(function () {
				$("#frm").validationEngine();
			});
			
		</script>
		<br/><br/><br/>
		<form id="frm" name="frm" action="" >
			<table border="1px">
				<tr>
					<th>head1</th>
					<th>head2</th>
					<th>head3</th>
					<th>head4</th>
				</tr>
				<tr>
					<td><input type="text" value="" class="validate[required]" name="body1"/></td>
					<td><input type="text" value="" class="validate[required]" name="body2"/></td>
					<td><input type="text" value="" class="validate[required]" name="body3"/></td>
					<td><input type="text" value="" class="validate[required]" name="body4"/></td>
				</tr>
				<tr>
					<td><input type="text" value="" class="validate[required]" name="body1"/></td>
					<td><input type="text" value="" class="validate[required]" name="body2"/></td>
					<td><input type="text" value="" class="validate[required]" name="body3"/></td>
					<td><input type="text" value="" class="validate[required]" name="body4"/></td>
				</tr>
				<tr>
					<td><input type="text" value="" class="validate[required]" name="body1"/></td>
					<td><input type="text" value="" class="validate[required]" name="body2"/></td>
					<td><input type="text" value="" class="validate[required]" name="body3"/></td>
					<td><input type="text" value="" class="validate[required]" name="body4"/></td>
				</tr>
			</table>
			<input type="submit" value="保存" />
		</form>
	</body>
</html>

4、sql(sqlserver)

4.1、如何查询一列相同但另一列不同的数据

--sql如何查询一列相同但另一列不同的数据
--同一个合同编号但合同金额币种不同
select sc.ContractNo from TSContract sc  group by sc.ContractNo  having COUNT(distinct sc.CurrencyCode)>1

4.2、把一张表中某一行中的数据插入另一张表中 

insert into Users(userName,password) select name,tel from VIPCustomers where name='张三';

4.3、sql把getdate()转为字符串

Select CONVERT(varchar(100), GETDATE(), 0): 05 16 2006 10:57AM
Select CONVERT(varchar(100), GETDATE(), 1): 05/16/06
Select CONVERT(varchar(100), GETDATE(), 2): 06.05.16
Select CONVERT(varchar(100), GETDATE(), 3): 16/05/06
Select CONVERT(varchar(100), GETDATE(), 4): 16.05.06
Select CONVERT(varchar(100), GETDATE(), 5): 16-05-06
Select CONVERT(varchar(100), GETDATE(), 6): 16 05 06
Select CONVERT(varchar(100), GETDATE(), 7): 05 16, 06
Select CONVERT(varchar(100), GETDATE(), 8): 10:57:46
Select CONVERT(varchar(100), GETDATE(), 9): 05 16 2006 10:57:46:827AM
Select CONVERT(varchar(100), GETDATE(), 10): 05-16-06
Select CONVERT(varchar(100), GETDATE(), 11): 06/05/16
Select CONVERT(varchar(100), GETDATE(), 12): 060516
Select CONVERT(varchar(100), GETDATE(), 13): 16 05 2006 10:57:46:937
Select CONVERT(varchar(100), GETDATE(), 14): 10:57:46:967
Select CONVERT(varchar(100), GETDATE(), 20): 2006-05-16 10:57:47
Select CONVERT(varchar(100), GETDATE(), 21): 2006-05-16 10:57:47.157
Select CONVERT(varchar(100), GETDATE(), 22): 05/16/06 10:57:47 AM
Select CONVERT(varchar(100), GETDATE(), 23): 2006-05-16
Select CONVERT(varchar(100), GETDATE(), 24): 10:57:47
Select CONVERT(varchar(100), GETDATE(), 25): 2006-05-16 10:57:47.250
Select CONVERT(varchar(100), GETDATE(), 100): 05 16 2006 10:57AM
Select CONVERT(varchar(100), GETDATE(), 101): 05/16/2006
Select CONVERT(varchar(100), GETDATE(), 102): 2006.05.16
Select CONVERT(varchar(100), GETDATE(), 103): 16/05/2006
Select CONVERT(varchar(100), GETDATE(), 104): 16.05.2006
Select CONVERT(varchar(100), GETDATE(), 105): 16-05-2006
Select CONVERT(varchar(100), GETDATE(), 106): 16 05 2006
Select CONVERT(varchar(100), GETDATE(), 107): 05 16, 2006
Select CONVERT(varchar(100), GETDATE(), 108): 10:57:49
Select CONVERT(varchar(100), GETDATE(), 109): 05 16 2006 10:57:49:437AM
Select CONVERT(varchar(100), GETDATE(), 110): 05-16-2006
Select CONVERT(varchar(100), GETDATE(), 111): 2006/05/16
Select CONVERT(varchar(100), GETDATE(), 112): 20060516
Select CONVERT(varchar(100), GETDATE(), 113): 16 05 2006 10:57:49:513
Select CONVERT(varchar(100), GETDATE(), 114): 10:57:49:547
Select CONVERT(varchar(100), GETDATE(), 120): 2006-05-16 10:57:49
Select CONVERT(varchar(100), GETDATE(), 121): 2006-05-16 10:57:49.700
Select CONVERT(varchar(100), GETDATE(), 126): 2006-05-16T10:57:49.827
Select CONVERT(varchar(100), GETDATE(), 130): 18 ??? ??? 1427 10:57:49:907AM
Select CONVERT(varchar(100), GETDATE(), 131): 18/04/1427 10:57:49:920AM

4.4、sql中要注意“空格键”和“Tab”键,虽然看起来一样,但是却是不相等的

--去除中间"空格"
SELECT Replace('EE12345-227张三 ABC',' ','');

--去除中间"TAB"
SELECT Replace('EE12345-227张三	ABC',char(9),' ');

--同时去除中间"空格"和中间"TAB"
SELECT Replace(Replace('EE12345-227张三	ABC',' ',''),' ','');

4.5、sql将一个表中的数据插入到另一个表中

1、如果两表字段相同
--a b 两表结构一样
insert into b select * from a 


2、若两表只是有部分(字段)相同
insert into b(col1,col2,col3,col4,...) select col1,col2,col3,col4,... from a where... 


3、把表a插入到表b中去
--b表不存在 
select * into b from a 
// 
select (字段1,字段2,...) into b from a 

4.6、sql取字符串中指定字符后面的内容

--输出202450
SELECT SUBSTRING('AAA=202450',CHARINDEX('=','AAA=202450')+1,len('AAA=202450')-charindex('=','AAA=202450'));

4.7、sql根据指定字段排序(字段为特定值则排在前面)

select * from T_AAA PP where xxx
order by 
case PP.StateName
when '已确认' then 1 --指定将StateName=已确认 的字段值排在最前面
when '等待确认' then 2 --指定将StateName=等待确认 的字段值排在第二个顺序,但不一定是第二条数据
else 3
end
asc,
PP.Id desc,PP.UsingState asc	--对其他字段排序

4.8、把多行按指定字段汇总到一行

select id,STRING_AGG(isnull(userId,'N/A'),',') from TInvoice group by id;

5、总结

1、注意测试和生产数据库可能环境配置不同,一些数据会有差异。比如Int类型可能默认值为0,也可能为null。

2、注意 2022-10-08 15:24:53.000  和   2022/10/14 14:36:40的区别!

3、http传输中文最好不要直接传输,可能会出现乱码,建议escape一下。

6、参考资料

js去掉浏览器地址后面指定的参数_码上敲享录的博客-CSDN博客_js去除url后面的参数

https://www.jb51.net/article/4633.htm

https://jingyan.baidu.com/article/d169e186039987436611d8ee.html

VB中的转义字符(回车、换行、Tab等)_小鸿1983的博客-CSDN博客_vb 回车换行

sql: 去除数据库表中tab、空格、回车符等特殊字符的解决方法 去除tab、空格、回车符等使用replace语句 按照ASCII码_Marcus丶的博客-CSDN博客

未完待续。。。。。。 

  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

金斗潼关

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值