javascript没有显示innerHTML

时间:2014-11-15 19:37:21

标签: javascript php forms validation

好的,我一直试图解决这个问题2天,这对我没有任何意义。所以我有一个注册表用户名,电子邮件,密码和重新输入密码。每个输入都有JavaScript,每个keyup将用户输入发送到php验证它,并在div下面显示“Good”,div为“password_feedback”(这一切都正常,如果我输入有效密码,它将会在“密码反馈”div中显示“good”

然后我检查JavaScript以查看“password_feedback”中的内容。如果“password_feedback”=“好”,“if语句”将在“check2”div中显示“good”,否则显示“bad”。但这不起作用它总会显示“坏”。

现在这里是奇怪的部分,我为所有4个输入做同样的事情(重新输入密码不会去php只是java)和“用户名”和“重新输入密码”工作,电子邮件和密码不。如果我改变

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

var password_good = document.getElementById('feedback')。innerHTML; (用户名反馈而非密码反馈)

然后它将适用于用户名。再次,“password_feedback”将显示“好”,就像它应该这样有效。

在javascript中如果我用用户名信息替换所有密码信息它将起作用,所以我知道ity工作正常。我甚至无法推测为什么这对密码不起作用,但对用户名起作用。 iv尝试了我能想到的一切,我缩小了页面,所以它只验证密码。 maby有人在那里知道我不知道的事情。

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


?>

1 个答案:

答案 0 :(得分:0)

尝试将输入类型=“密码”更改为输入type =“text”:

浏览器中的密码被区别对待,因此您可能会因此而看到结果时发生冲突。您可以尝试使用keyup和使用的字符来捕获密码字段,但由于以下几个原因,这很麻烦:

  • 此事件并非所有字符都被浏览器捕获(即使字符子集也可能不使用此事件)
  • 您必须使用数据结构并确保它与字段匹配

最好只使用$(input).val()函数在每次keyup,keypress或change事件触发时存储为密码。