Jquery 如何将DOM更改为';如果/否则';语句单独为true,如果所有if语句都为true,则还将变量设置为true?

Jquery 如何将DOM更改为';如果/否则';语句单独为true,如果所有if语句都为true,则还将变量设置为true?,jquery,forms,validation,if-statement,submit,Jquery,Forms,Validation,If Statement,Submit,我不知道该如何像往常一样表达这个问题 我已经为这个密码验证工作了一段时间(之前很少有关于它的问题),现在我离验证越来越近了 我有一个显示密码规则的html列表: <form id="form-password-change" method="post" action="/notrelevantrightnow"> <div class="control-group"> <label class="control-label" for="inp

我不知道该如何像往常一样表达这个问题

我已经为这个密码验证工作了一段时间(之前很少有关于它的问题),现在我离验证越来越近了

我有一个显示密码规则的html列表:

<form id="form-password-change" method="post" action="/notrelevantrightnow">
    <div class="control-group">
        <label class="control-label" for="input-username">{{label_username}}</label>
        <div class="controls">
            <input type="text" id="input-username" name="username" class="required" value="{{username}}" autocomplete="off">
        </div>
    </div>
    <div id="password-info">
        <ul>
            <li id="length" class="invalid">Password must be 8 characters</li>
            <li id="letter" class="invalid">Password must contain 3 letters</li>
        </ul>
    </div>
    <div class="control-group">
        <label class="control-label" for="input-password">{{label_new_password}}</label>
        <div class="controls field">
            <input type="password" id="input-password" name="password" placeholder="{{label_password}}" autocomplete="off">
        </div>
    </div>
    <button type="submit" class="btn btn-large btn-wide btn-primary">Send Request</button>
</form>

如果我不尽快解决这个问题,我可能会崩溃。

试试下面的方法。基本上,我们将初始化为false,然后在第一次检查时,如果通过,则设置为true。。在随后的检查中,将其设置为
pwdValid&&true
,因此如果失败,它将继续报告false

function validatePwdStrength(){

        var pwdValue = $(pwdInput).val(); // This works because when it's called it's called from the pwdInput, see end

        pwdValid = false; //start out false;

        // Validate the length
        if (pwdValue.length > 7) {
            $('#form-password-change #length').removeClass('invalid').addClass('valid');
            pwdValid = true;
        } else {
            $('#form-password-change #length').removeClass('valid').addClass('invalid');

        }

        // RegExp
        // Validate number of letters letters
        if ( /([^a-z]*[a-z]){3,}/i.test(pwdValue) ) {
            $('#letter').removeClass('invalid').addClass('valid');
            pwdValid = pwdValid && true; // As soon as I add this one, my previous if cases are forgotten.
        } else {
            $('#letter').removeClass('valid').addClass('invalid');

        }
    };

这真是太棒了@lucuma,效果很好。我只剩下一个问题。如果验证为true,例如,两个字段都通过了验证,则pwdValid设置为true。但是,如果您随后更改密码框中的值,它仍然认为它设置为true?在你的小提琴上,我输入了足够多的字符,将验证设置为绿色,然后我开始删除它们,验证被删除。。我不明白问题是什么?是的,添加和删除类很好。当您在中提交表单时,我添加了一个警告,显示在上述场景中pwdValid应为false时,pwdValid如何设置为true。我认为您错过了部分答案。您需要在顶部的函数中将pwdValid设置为false。看到上面的注释,上面写着:
//start out false
我更新了你的小提琴:啊,是的,我确实错过了,然后我通过重新键入
var pwdValid=false
而不是
pwdValid=false
将其设置为false。非常感谢你!!!
function validatePwdStrength(){

        var pwdValue = $(pwdInput).val(); // This works because when it's called it's called from the pwdInput, see end

        pwdValid = false; //start out false;

        // Validate the length
        if (pwdValue.length > 7) {
            $('#form-password-change #length').removeClass('invalid').addClass('valid');
            pwdValid = true;
        } else {
            $('#form-password-change #length').removeClass('valid').addClass('invalid');

        }

        // RegExp
        // Validate number of letters letters
        if ( /([^a-z]*[a-z]){3,}/i.test(pwdValue) ) {
            $('#letter').removeClass('invalid').addClass('valid');
            pwdValid = pwdValid && true; // As soon as I add this one, my previous if cases are forgotten.
        } else {
            $('#letter').removeClass('valid').addClass('invalid');

        }
    };