2014-11-15 3 views
1

괜찮아요. 지금 2 일 동안 이것을 알아 내려고 노력했지만 나에게 어떤 의미가 없습니다. 그래서 나는 사용자 이름, 전자 메일, 암호 및 다시 암호를 등록 양식을 가지고 있습니다. 각 입력에는 JavaScript를 사용하여 모든 키 업에서 사용자가 입력 한 내용을 PHP로 보내고 유효성을 검사하는 div에 "Good"을 표시합니다. div는 "password_feedback"입니다 (유효한 암호를 입력하면이 모든 항목이 정상적으로 작동합니다. "비밀번호 피드백"div에 "good"표시)javascript in innerHTML diplaying

나는 "password_feedback"에 무엇이 있는지 확인합니다. "if 문"은 "check2"div에 "good"을 표시합니다. "password_feedback"== "Good"그렇지 않으면 "bad"를 표시합니다. 그러나 이것이 작동하지 않는다면 항상 "나쁜"것을 표시 할 것입니다.

이제는 4 개의 입력 모두에 대해 동일한 작업을 수행하는 이상한 부분이 있습니다 (암호를 다시 입력하면 PHP가 자동으로 실행되지 않습니다). "사용자 이름"과 "암호를 다시 입력하십시오"는 모두 작동합니다. 아니. 내가 바꿀 경우

var password_good = document.getElementById ('password_feedback'). innerHTML;

에 VAR의 password_good = document.getElementById를 ('피드백') innerHTML을.; (비밀번호 feedabck 대신 사용자 이름 피드백)

사용자 이름으로 작동합니다. 다시 "password_feedback"은 "Good"으로 표시되어 작동해야합니다.

자바 스크립트에서 사용자 이름 정보로 모든 암호 정보를 바꾸면 작동하므로 잘 작동합니다. 나는 이것이 암호에 대해 작동하지 않는 이유는 모르지만 사용자 이름에 대해서는 왜 그런지 추측한다. iv는 내가 생각할 수있는 모든 것을 시도했다. 나는 페이지를 줄여 암호 만 유효하도록했다. 누군가 나 밖에 몰라요.

<script type="text/javascript" src="jquery.js"></script> 
 
<script type="text/javascript"> 
 
$(document).ready(function(){ 
 
\t $('#password_feedback').load('password-check.php').show(); 
 
\t 
 
\t $('#password_input').keyup(function(){ 
 
\t \t //username: is name of variable sent to php, form is name of form, username is name of input 
 
\t \t $.post('password-check.php', { password: form.password.value}, 
 
\t \t function(result) { 
 
\t \t \t $('#password_feedback').html(result).show(); 
 
\t \t }); 
 
\t \t 
 
\t }); 
 
}); 
 
</script> 
 

 
<!-- begin snippet: js hide: false -->

<script type='text/javascript'> 

    function check_info1(){ 
    var password_good = document.getElementById('password_feedback').innerHTML; 

     if(password_good == "Good"){ 
    document.getElementById("check2").innerHTML = "good"; 
    } 
    else{ 
     document.getElementById("check2").innerHTML = "bad "; 
    } 
     } 


</script> 
<form name="form" onKeyUp="check_info()" onMouseUp="check_info1()" > 

    Username:<br /> 
    <input type="text" id="username_input" name="username"><div id="feedback"> </div> 

    E-mail:<br/> 
    <input name="email" type="text" id="email_input" value=""><div id="email_feedback"> </div> 

    Password:<br/> 
    <input name="password" type="password" id="password_input" value=""><div id="password_feedback"></div> 

    Re-enter Password:<br/> 
    <input name="password2" type="password" id="password_retype" value=""><div id="password_feedback2"> </div> 

    <input type="submit" value="Submit" class="login_btn"/> 

    </form> 
    <div id="check"></div> 
    <div id="check2"></div> 
$connect = mysqli_connect("localhost", "????", "????","?????"); 

if (mysqli_connect_errno()){ 
    echo "failed" . mysqli_connect_error(); 
} 




$password = mysqli_real_escape_string($connect, $_POST['password']); 
$check = mysqli_query($connect,"SELECT password FROM users WHERE password='$password'"); 
$check_num_rows = mysqli_num_rows($check); 


if ($password==NULL) 
echo "enter a password"; 


else if(preg_match('~[A-Z]~', $password) && 
    preg_match('~[a-z]~', $password) && 
    preg_match('~\d~', $password) && 
    (strlen($password) > 6)){ 
    echo "Good"; 
} else { 
    echo "Not good enough"; 
} 


?> 

답변

0

= "텍스트"입력 유형 입력 유형 = "암호"를 변경해보십시오 :

브라우저의 암호는 다르게 취급되므로이 결과로 인해 충돌이 발생할 수 있습니다. 당신의 keyup 사용 된 문자를 사용하여 암호 필드를 캡처하려고 할 수 있습니다, 그러나 이것은 몇 가지 이유에 대한 혼란이다

  • 모든 문자가이 이벤트에 의해 캡처하지 동일한에서 브라우저 (이 사용할 수 없습니다 문자도 하위 집합 이벤트)
  • 당신은 데이터 구조를 사용하고 필드를 일치하는지 확인해야

당신은 단순히 때마다 암호로의 keyup를 저장하기 위해 (입력) .val() 함수를 $를 사용하는 것이 더 낫다 , 키 누르기 또는 변경 이벤트 발생.

+0

제안 해 주셔서 감사하지만 작동하지 않았습니다.나는 그것이 영향을 미칠 것이라고 생각하고, 자바가보고있는 div가 제대로 표시되고 있습니다. 자바가 인식하지 못하는 것처럼 보입니다. – mike

+0

키 변경 대신 "변경"또는 "키 누르기"이벤트를 시도하십시오. – mgwhitfield

+0

iv는 모든 종류의 기능을 시험해 보았고 retype-password는 동일하고 다른 "div"와 똑같은 "good"을 찾는다. – mike