지난 이틀 동안 HTML에서 다양한 컨트롤을 조작하기 위해 스크립트를 사용하는 방법을 묻는 친구들을 본 적이 있는데, 이제 제가 직접 요약하겠습니다. 프로젝트상의 이유로 많은 프로그램이 VBScript로 작성되었습니다. 관심 있는 친구들은 이를 실시간으로 공유하는 것을 잊지 마세요.
이제 본론으로 들어가 이를 소개하겠습니다.
오늘은 VBScript를 사용하여 선택된 확인란 수와 선택된 확인란의 값을 결정하는 방법을 소개하겠습니다.
주문목록 등의 목록을 생성할 때, 각 주문기록 앞에 체크박스를 배치하여 일괄삭제, 발급 등의 기능을 제공할 수 있습니다. 일반적으로 각 체크박스의 값은 주문번호 등 해당 기록의 기본키 값입니다. 삭제, 해제 등의 기능을 수행할 때에는 몇 개의 체크박스가 선택되어 있는지, 이 체크박스들이 어떤 값에 해당하는지를 알아야 합니다. 그 방법은 아래와 같습니다.
프로그램은 세 부분으로 나뉩니다.
1. 선택한 CheckBox가 하나인지 둘 이상인지 결정합니다.
주요 아이디어는 이름은 같지만 ID가 다른 확인란이 여러 개 있는 경우 확인란 컨트롤의 이름을 지정하는 것입니다. chkTest를 호출하면 배열 형태로 호출됩니다. 예를 들어 chkTest라는 이름의 체크박스가 3개 있고 해당 ID는 chkTest1, chkTest2, chkTest3입니다. 다음과 같이 작성해야 합니다: chkTest(0).checked , chkTest(1).checked, chkTest(2).checked (배열은 0부터 시작함) 확인란이 하나만 있는 경우 chkTest.checked를 직접 사용할 수 있습니다. 이는 다른 숫자(하나 이상)에 대해 확인란 정보를 얻는 데만 다른 방법을 사용할 수 있음을 결정합니다. 동일한 이름과 다른 ID를 가진 컨트롤이 여러 개 있는 경우 컨트롤에는 "control name.type" 속성이 있고 이 읽기 전용 속성은 모든 문자열, 즉 컨트롤 name.type = "과 같을 수 있습니다. 모든 문자열" 상수는 true입니다. 물론 이는 컨트롤 name.type 속성이 있는 경우에만 해당되며, 그렇지 않은 경우에는 항상 false이므로 목록의 체크박스가 단일인지 다중인지 구분이 가능합니다. 절차는 다음과 같습니다:
'******************************************** ***** ***
'<함수 이름>
' gfIs_ArrayTest(obj)
'<함수>
' 선택한 CheckBox가 하나인지 둘 이상인지 확인
'<매개변수>
' CheckBox 개체 이름
'<반환 값>
' 진실
' 거짓
'<비고>
' AITD가 2004년 3월 15일에 작성함
'************************************************
함수 gfIs_ArrayTest(obj)
오류 발생 시 다음 재개
obj.type = "flag"이면
gfIs_ArrayTest = 참
또 다른
gfIs_ArrayTest = 거짓
종료하면
종료 기능
2. 화면의 확인란 선택이 요구 사항을 충족하는지 확인합니다.
예를 들어 삭제 시에는 하나 이상의 레코드를 선택하고, 수정 시에는 하나의 레코드만 선택하는 것을 의미합니다. 기타, 5개 항목만 선택할 수 있음, 10개 항목만 선택할 수 있음 등 다음 절차를 다음과 같이 변경하면 됩니다. 방금 말한 것을 잊지 마세요. 하나의 체크박스와 여러 개의 체크박스만 처리하는 방법에는 여러 가지가 있습니다.
'************************************************ * ****
'<함수 이름>
' gfChkCheckbox()
'<함수>
' Screen CheckBox의 선택이 요구 사항을 충족하는지 확인하십시오.
'<매개변수>
' obj: 해당 확인란 컨트롤
'플래그: 규칙 확인: 0은 여러 개를 선택할 수 있습니다.
' 1 하나만 선택할 수 있습니다.
' name: 어떤 컨트롤이 오류를 보고했는지에 대한 정보를 사용자에게 묻습니다.
'<반환 값>
' 진실
' 거짓
'<비고>
' AITD가 2004년 3월 15일에 작성함
'************************************************ * ****
함수 gfChkCheckbox(obj,플래그,이름)
나는 어둡다
j
gfChkCheckbox = 거짓
나는 = 0
j = 0
'객체가 존재하지 않는 경우
isnull(obj)이면
msgbox "" + 이름 + "를 선택하세요. '개체를 선택하세요."
gfChkCheckbox = 거짓
종료 기능
종료하면
'객체는 하나뿐이다.
gfIs_ArrayTest(obj)가 아니면
obj.checked = false인 경우
msgbox "" + 이름 + "를 선택하세요. '개체를 선택하세요."
gfChkCheckbox = 거짓
종료 기능
또 다른
gfChkCheckbox = true
종료 기능
종료하면
end if
i = 0 ~ (obj.length - 1)에 대해
여러 객체가 존재하는 경우
obj(i).type = "체크박스"인 경우
obj(i).checked = true이면
j=j+1
종료하면
종료하면
다음
j = 0이면
msgbox "선택하세요" + 이름 + "." '개체를 선택하세요.
gfChkCheckbox = 거짓
종료 기능
종료하면
j = 1이면
gfChkCheckbox = true
종료 기능
종료하면
j > 1이면
플래그 = 1이면
msgbox "" + 이름 + " 하나만 선택할 수 있습니다. '개체는 하나만 선택할 수 있습니다."
gfChkCheckbox = 거짓
종료 기능
또 다른
gfChkCheckbox = true
종료 기능
종료하면
end if
end 기능
3. 체크박스
값
얻기 나중에 처리하기 쉽도록 중요한 정보는 나중에 접근할 수 있도록 체크박스의 값 속성에 저장되는 경우가 많습니다.다음 프로그램은 "^|^" 구분 기호를 사용하여 선택한 확인란의 값을 문자열로 묶어 반환합니다.
'************************************************
'<함수 이름>
'gfGetCheckBox값(obj)
'<함수>
'선택한 CheckBox의 값을 가져옵니다.
'<매개변수>
' CheckBox 개체 이름
'<반환 값>
'선택한 CheckBox의 값
'<비고>
' AITD가 2004년 3월 15일에 작성함
'************************************************
함수 gfGetCheckBoxValue(obj)
희미한 strValue
희미한 intCounter
어둡습니다.
strValue = ""
intCounter = 0
'객체가 존재하지 않는 경우
isnull(obj)이면
gfGetCheckBoxValue = strValue
종료 기능
end if
'객체가 다음과 같은 경우
gfIs_ArrayTest(obj)가 아니면
obj.checked = false인 경우
gfGetCheckBoxValue = strValue
종료 기능
또 다른
gfGetCheckBoxValue = obj.value
종료 기능
종료하면
end if
'객체가 여러 개인 경우
i = 0에서 obj.length - 1까지
obj(i).checked = true이면
intCounter > 0이면
strValue = strValue & "^|^" & CStr(obj(i).value)
또 다른
strValue = CStr(obj(i).value)
종료하면
intCounter = intCounter + 1
종료하면
다음
gfGetCheckBoxValue = strValue
end 함수는
VBScript에서 체크박스를 처리하는 방식이다(가끔 사용된다). 이러한 함수는 일반 vbs 파일로 캡슐화되고 html의 <head> 태그 영역에서 참조되어 <head><script 언어=vbscript src=vbsChkBoxTool.vbs></script> </와 같이 보편적으로 사용할 수 있습니다. head>
또한 실제 응용에서는 쿼리 조건에 따라 생성된 목록에 단일 레코드가 없을 수도 있습니다. 즉, 해당 이름의 컨트롤이 계속 호출되는 경우 IE에 대한 확인란 컨트롤이 없을 수 있습니다. 오류가 보고됩니다. 좋은 해결책이 없었기 때문에 체크박스 컨트롤 없이 이 상황을 우회하는 프로그램을 작성했습니다:
function sIsChkBoxExist()
오류 발생 시 다음 재개
오류가 발생했습니다.지우기
isEmpty(document.frmOrderList.chkOrder)인 경우
종료하면
err.number <> 0이면
또 다른
sIsChkBoxExist=true
종료하면
오류가 발생했습니다.지우기
최종 함수
프로그램에서 isEmpty와 같은 특정 컨트롤에 대해 임의의 작업을 수행합니다. err.number>0이 캡처되면 해당 컨트롤이 존재하지 않는다는 의미입니다. 그러나 다음에 오류가 재개되므로 오류가 발생하지 않습니다. 프롬프트됩니다. 이는 또한 컨트롤이 존재하는지 여부를 결정합니다.
위의 세 가지 함수를 호출하기 전에 매번 sIsChkBoxExist 함수를 한 번 호출하여 해당 컨트롤이 존재하는지 확인해야 오류가 발생하지 않습니다.