在Javascript中比较表单中的两个字段 - 不起作用

时间:2009-05-27 00:42:12

标签: javascript jquery html

谁能告诉我我做错了什么?我的comparePasswords()无效...

        <script>

            function comparePasswords()
            {
                if (post-form.password.value != post-form.password2.value)
                {
                    $('passwordShow').innerHTML = '';
                }
                else
                {
                    $('passwordShow').innerHTML = 'Passwords do not match';
                }
            }
        </script>


<form id="post-form" action="signup.php" method="post" >

<input type="password" id="password" name="password" onkeyup="testPassword(this.value);" maxlength="50" size="25" tabindex="102" value="">

<input type="password" id="password2" name="password2" onkeyup="comparePasswords();" maxlength="50" size="25" tabindex="104" value="">

</form>

3 个答案:

答案 0 :(得分:1)

你需要使用

document.getElementById('password').value

document.getElementById('password2').value

另外,你的逻辑错了。如果密码不匹配,将触发第一个条件块。

修改

似乎你正在使用jQuery,所以只需使用

$('#password').val()

获得该字段的值。

您还应该使用jQuery(也可以)使用html()方法设置innerHTML

答案 1 :(得分:1)

问题在于您如何访问表单对象。

post-form.password

对于javascript引擎,这与此相同:

post - (form.password)

此外,您必须为表单提供name属性(而不仅仅是id)才能以这种方式访问​​它。如果您想通过名称访问它,您可以使用以下内容:

document['post-form'].password

或者通过id:

document.getElementById("post-form");

答案 2 :(得分:0)

你的if中的测试是向后的。第一个分支是测试两个密码是否彼此不相等。