0

ユーザーが登録時に入力する 2 つのパスワードを比較しようとしていますが、パスワードが確認済みのパスワードと等しい場合は常に、パスワードが一致しないというエラーがスローされます。これには 2 つの段階があり、パスワードが入力されていない場合は正常に機能するエラーが表示されますが、2 つのパスワードを比較する第 2 段階では、エラーは常に true であり、それ自体が表示されます。

if ($('#password').val() == "") {
     $('.error').append("<li> Please enter a pasword </li>");
     error = true;
    } else if ($('#password') !== $('#password1')) {
     $('.error').append("<li> You password does not match the confirmed password </li>");
     error = true;
    }
4

2 に答える 2

0

コードを少し改善して、高速化することができます。dom クエリをキャッシュし、エラー テキストを一度挿入する必要があります。エラーがあるかどうかは、エラー配列の空/非空によって決まります。

var FormHandler = {
    errors: [],
    validate: function(){/*...function to run all validations */}
    checkPassword: function(){
        var pass = $('#password').val();
        if (!pass || pass === "") {
           this.errors.push("Please enter a pasword");
        } else if (pass !== $('#password1').val()) {
           this.errors.push("You password does not match the confirmed password");
        }
        this.printErrors(); // or continue to next form validation
    },

    //...more validation functions...

    printErrors: function(){
       if(this.errors.length){
           $('.error').html("<ul><li>" + this.errors.join("</li><li>") + "</li></ul>");
       }
    },
}

やり過ぎのように思えるかもしれませんが、フォームが長くなり、検証がより複雑になるにつれて、維持するのがより速く、はるかに簡単になります。

于 2013-10-18T20:43:31.033 に答える