2011-05-02 6 views
0

양식을 제출하기 전에 Quebec 우편 번호를 확인하려고합니다. 다음 함수 (onBlur)는 문자를 대문자로 만들고 공백을 제거해야합니다. "else"이전의 모든 항목이 정상적으로 작동합니다.JS 유효성 검사에서 regexp, replace 및 ToUppercase 문제가 발생했습니다.

function back2(that){ 
    if (that.value.length <=4) { 
     that.value = that.getAttribute("default"); 
     that.setAttribute("class", "exemple"); 
    } else { 
     if (that.getAttribute("id") == 'zip') { 
      that.setAttribute("value", that.value.replace(/\s/g, "")); 
      that.setAttribute("value", that.value.toUpperCase()); 
     } 
    } 
} 

이 제품은 onSubmit 이벤트에 의해 트리거 양식 유효성 검사 코드의 일부입니다

if (f.value != "^G//d//D//d//D//d$" || 
     f.value != "^H//d//D//d//D//d$" || 
     f.value != "^J//d//D//d//D//d$" || 
     f.value != "^K1//D//d//D//d$" || 
     f.length !=6) { 
     alert("Veuillez mettre un code postal valide du Québec, merci."); 
     return false; 
    } 
    return true; 
} 

및 HTML 코드 :

<td>Code Postal</td> 
<td><input name="zip" type="text" 
    id="zip" value="J0B4M1" size="35" 
    class="exemple" onfocus="clean(this)" 
    onblur="back2(this)" default="J0B4M1"></td> 

JS 코드의 두 부분에서 문제가 아무것도 때문에 필드 상자를 변경하면 우편 번호에 공백이 있고 소문자로 표시됩니다. 또한 우편 번호 형식이 올바른 경우에도 알림이 표시됩니다. 도움!

+0

oops ... 전달 슬래시는 백 슬래시 여야합니다. – Ishikawa

+0

@RobG 감사합니다! – Ishikawa

답변

2

이 같은 정규식과 일치 할 수 없습니다

f.value != "^G//d//D//d//D//d$" 

당신은 .match 또는 .test 필요합니다. /없이 \이 많이있다 ... 나는 정말 정규식 그래도 무엇인지 모르는

f.value.match(...) 

: 나는 경기를 좋아한다. Je suis 혼란스러워!

PS
이 하나입니다 : http://regexlib.com/REDetails.aspx?regexp_id=570 당신은 꼭 Guugle을 사랑 해요! 즉, 하나 인 경우

, 당신이 사용할 수 있습니다

if (!f.value.match(/^[a-zA-Z]{1}[0-9]{1}[a-zA-Z]{1}(\-| |){1}[0-9]{1}[a-zA-Z]{1}[0-9]{1}$/)) { alert('Oy! That\'s not right!'); } 

을이 하나가 완벽하지 않지만 (쓸모없는 {1}주의) ... 어이가 작동하는 경우, 바로!?

+0

~ {1}이 (가) 쓸모 없습니까? – Ishikawa

+0

~ 링크를 제공해 주셔서 감사합니다. 그의 코드를 수정했고 그 부분은 이제 작동합니다. 감사! – Ishikawa

+0

예. 이 경우에는 절대 없습니다. (항상 생각합니다.) 그리고 모든 [0-9]는'\ d'로 쓰여질 수 있습니다. 그리고 (마지막'/'다음에)'i' 플래그를 추가하면'[a-zA-Z]'는'[a-z]'로 바뀝니다. – Rudie

관련 문제