다양한 Type 확인(영어대소문자, 숫자, 문자+숫자)
정규식 없이 사용하는 방법
미리 타입을 정해 놓고 확인
var NUM = "0123456789";
var SALPHA = "abcdefghijklmnopqrstuvwxyz";
var ALPHA = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"+SALPHA;
var COMMA = ",";
var NUMALPHA = new RegExp('[^a-zA-Z0-9]'); //영문자와 숫자 책크
function TypeCheck (s, spc) {
var i;
for(i=0; i< s.length; i++) {
if (spc.indexOf(s.substring(i, i+1)) < 0) {
return false;
}
}
return true;
}
if (!TypeCheck('11234567a', NUM)) {
return false;
}
if (!TypeCheck(f.id.value, ALPHA+NUM)) {
return false;
}
숫자(정수) 체크
function IsIntChk(strTmp){
var len, i, imsi;
strTmp = "" + strTmp;
len = strTmp.length;
for(i=0; i<len; i++){
imsi = strTmp.charAt(i);
if(imsi<"0" || imsi>"9"){
return false;
}
}
return true;
}
정규식을 사용한 패턴 채크
function chkPatten(str, patten)
{
var regNum =/^[0-9]+$/;
var regPhone =/^[0-9]{2,3}-[0-9]{3,4}-[0-9]{4}$/;
var regMail =/^[_a-zA-Z0-9-]+@[._a-zA-Z0-9-]+.[a-zA-Z]+$/;
var regDomain =/^[.a-zA-Z0-9-]+.[a-zA-Z]+$/;
var regAlpha =/^[a-zA-Z]+$/;
var regHost =/^[a-zA-Z-]+$/;
var regHangul =/[가-힣]/;
var regHangulEng =/[가-힣a-zA-Z]/;
var regHangulOnly =/^[가-힣]*$/;
var regId = /^[a-zA-Z]{1}[a-zA-Z0-9_-]{4,15}$/;
var regDate =/^[0-9]{4}-[0-9]{2}-[0-9]{2}$/;
patten = eval(patten);
if(!patten.test(str)){
return false;
}
return true;
}
chkPatten('12345a', 'regNum')
key event를 활용한 체크
onkeydown='func();' 를 활용한 유효성 체크
숫자 체크
function onlyNumber() {
if((event.keyCode<48)||(event.keyCode>57)){
event.returnValue=false;
}
}
영문자 체크
function onlyAlpha(kcode) {
if((event.keyCode<65)||(event.keyCode>90))
if((event.keyCode<97)||(event.keyCode>122)){
event.returnValue=false;
}
}
enter 체크
function enter(field) {
if (event.keyCode == 13) {
return false;
} else {
return true;
}
}
전체 form을 자동으로 체크
- html
<form onsubmit="return validator(this)">
<input type="text" name="NAME" checkenable msg="이름을 입력하세요">
<input type="password" name="PASSWD" value="" checkenable msg="비밀번호를 입력하세요">
<button type="submit" class="btn btn-default">저장</button>
</form>
- js
function validator(f){
if(autoCheckForm(f)){
return true;
}else return false;
}
function autoCheckForm(f)
{
var i,currEl,currMsg;
for(i = 0; i < f.elements.length; i++){
currEl = f.elements[i];
//필수 항목을 체크한다.
if (currEl.getAttribute("checkenable")) {
currMsg = currEl.getAttribute("msg");
var type = currEl.type.toLowerCase();
switch(type) {
case 'text':
case 'password':
case 'textarea':
case 'select':
if(!chkText(currEl)) {
alert(currMsg);
return false;
}
break;
case 'checkbox':
if(!chkCheckbox(f, currEl)) {
alert(currMsg);
return false;
}
break;
case 'radio':
if(!chkRadio(f, currEl)) {
alert(currMsg);
return false;
}
break;
}
}
}
return true;
}
function chkText(field)
{
if(field.value.trim().length < 1){
field.focus();
return false;
}
return true;
}
function chkCheckbox(form, field)
{
fieldname = eval(form.name+'.'+field.id);
if (fieldname.length == undefined) {//배열이 아니라 하나의 단일값 존재
fieldname.length = 1;
fieldname[0] = fieldname;
}
for( i = 0, nChecked = 0; i < fieldname.length; i++) if( fieldname[i].checked) nChecked++;
if(!nChecked){
field.focus();
return false;
}
return true;
}
function chkRadio(form, field)
{
fieldname = eval(form.name+'.'+field.id);
for (i=0;i<fieldname.length;i++) {
if (fieldname[i].checked) {
return true;
}
}
field.focus();
return false;
}