1

これが私のフォームです。

<form method="post" name="frm" >

    <label>Name*<input type="text" name="Name" value="<?php echo $r['Name'] ?>" onblur="if(this.value.length<3) alert('Name too short');" /></label>


    <label>Username*<input type="text" name="UN" value="<?php echo $r['UN'] ?>" onblur="if(this.value.length<5) alert('Username too short');" /></label>
    <label>Password*<input type="password" name="PW"  onblur="validation()" /></label>
    <label>Confirm Password*<input type="password" name="CM" onblur="validation()" /></label>
    <?php } ?>

    <input type="submit" name="Submit" value="<?php if($new) echo 'Register'; else echo 'Update'; ?>" />
</form>

個別の onblur イベントを記述せずに、これらすべてのイベントを validation() という関数に入れようとしています。これは、パスワードに対して行ったように、パスワード フィールドを確認するためです。これが検証関数です。

<script language="javascript">
      function validation(){
            var password= document.frm.PW.value;
            var password2=document.frm.CM.value;
            if (password.length<5){
                alert ("Password too short");
                }
            else if(password!=password2){
                alert("password mismatch");
                }

            }

    </script>

しかし、このコードを使用すると、パスワードを入力し、確認パスワードフィールドの入力を開始しようとすると、メッセージが警告されます(「パスワードの不一致」)。これを取り除く方法。検証している場合はすべてのフォームタグvalidation() 関数を使用して、各タグで onblur=validation(); を呼び出す必要がありますか?

4

1 に答える 1

1

メインのパスワード変更時にパスワード検証を起動しないでください。password2 を変更したとき、または送信をクリックしたときに起動します。:)

パスワードとパスワード 2 を更新するときに確認する必要がある場合は、パスワード 2 が空白のままになっていないかどうかを確認するためのチェックを追加します。

else if(password !== password2 && password2 !== ""){

しかし、送信時にすべてのチェックを行うことは、はるかにクリーンなソリューションです (そして、Rake が言うように、アラートの代わりに更新されるスパンを持つ方が、よりきれいになります)。

于 2013-07-29T14:30:09.593 に答える