2015-01-21 4 views
-1

와 양식을 확인하는 동안 내 (작업) 검증 스크립트에 (I 웹 사이트에서 발견했다)이 코드 조각 삽입을 시도 :확인 (,,.) 자바 스크립트

if (register.username.match(/\W/)) { 
    alert('You have special characters on username field.'); 
    return false; 
} 

을 그것은 아무것도하지 않았고, 또한 전체 스크립트가 작동하지 못하게 막았습니다.

는 HTML 양식 (안 전체 것)입니다 :

<form name="register" method="POST" action="registar.php" onsubmit="return validateForm();"> 
    <ul class="left-form"> 
     <h2>Nova conta:</h2> 
     <li> 
      <input type="text" name="username" placeholder="Username" required/> 
      <div class="clear"> </div> 
     </li> 
     <li> 
      <input type="text" name="email" placeholder="Email" required/> 
      <div class="clear"> </div> 
     </li> 
     <li> 
      <input type="password" name="pass" placeholder="Password" required/> 
      <div class="clear"> </div> 
     </li> 
     <li> 
      <input type="password" name="pass_confirm" placeholder="Confirmar a password" required/> 
      <div class="clear"> </div> 
     </li> 
     <input type="submit" value="Registar"> 
     <div class="clear"> </div> 
    </ul> 
</form> 

그리고 이것은 (특수 문자가 확인하지 않고) 내에 javscript 코드 :있는 그대로

function validateForm() { 
    if (register.username.value.length <= 2) { 
     alert("O username escolhido é demasiado curto."); 
     return false; 
    } 
    if (register.username.value.length > 20) { 
     alert("O username escolhido é demasiado longo."); 
     return false; 
    } 
    var x = register.email.value; 
    var atpos = x.indexOf("@"); 
    var dotpos = x.lastIndexOf("."); 
    if (atpos < 1 || dotpos < atpos + 2 || dotpos + 2 >= x.length) { 
     alert("O email inserido parece ser inválido."); 
     return false; 
    } 
    if (register.username.value == register.pass.value) { 
     alert("Por questões de segurança, pedimos que use uma password diferente do seu nome de utilizador."); 
     return false; 
    } 
    if ((register.pass.value.length < 6) || (register.pass.value.length > 20)) { 
     alert("Certifique-se que a sua password tem entre 6 e 20 letras."); 
     return false; 
    } 
    if (register.pass.value != register.pass_confirm.value) { 
     alert("As passwords não condizem."); 
     return false; 
    } 
    return true; 
} 

이 경고를 무시 메시지 만 표시합니다.

누군가 특수 문자 (!,. + * 등)를 확인하는 코드를 쓰거나 내가 사용했던 코드의 문제점을 알려주시겠습니까?

if (register.username.value.match(/\W/)) { 
    alert('You have special characters on username field.'); 
    return false; 
} 

의 차이점은 무엇입니까 :

+0

양식과 이름란의 HTML을 보여주십시오. –

+1

내 이름에 그 문자가 있다면? ==> –

+1

웹 사이트에서 찾은 무작위 스크립트를 잡아 코드에 적용하면 개발 우수성에 대한 성공적인 경로가 아닙니다. 당신이 일하는 언어와 환경에 대해 배우는 시간을 가지십시오. 그러면 당신은 이러한 종류의 변화를 당신의 수면에서 할 수있을 것입니다. 이 경우에는 [정규식] (https://developer.mozilla.org/en/docs/Web/JavaScript/Guide/Regular_Expressions)을 찾고있을 것입니다. –

답변

1

당신은 아마 이것에 코드를 변경해야합니까? 당신이 중간에 .value을 추가했다는 것을 깨달은 경우에. register.username은 사용자 이름 입력 요소를 참조하기 때문에 match 메소드가 없습니다. 입력 된 텍스트를 확인해야합니다. input element reference을 확인하면 입력 한 텍스트를 반환하는 value 속성을 사용한다는 것을 알 수 있습니다. 따라서 register.username.value은 사용자가 입력 한 텍스트이고, 문자열이므로 .match method을 사용할 수 있습니다.

이제 모든 정규식을 사용자의 요구에 맞는 일치 방식으로 전달할 수 있습니다. the guide on regex도 확인하십시오.

개발자 콘솔에 표시된 오류도 항상 확인하십시오.

+0

OP,이 작품! – Elric

+0

고마워요! 솔직히 누락 된'.value'를 알아 차리지 못하게하는 것이 큰 부분이었습니다. –