Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 自定义密码强度验证插件_Javascript_Jquery_Validation_Jquery Plugins - Fatal编程技术网

Javascript 自定义密码强度验证插件

Javascript 自定义密码强度验证插件,javascript,jquery,validation,jquery-plugins,Javascript,Jquery,Validation,Jquery Plugins,我正在使用一个名为pStrength.jquery.js的插件,出于某种原因,它没有提交我的表单,或者它正在提交表单,即使在我更改代码时不应该提交表单 我使用的代码是: $(document).ready(function () { $('#myForm').submit(function () { return false; }); $('#myElement1, #myElement2').pStrength({ 'changeBac

我正在使用一个名为pStrength.jquery.js的插件,出于某种原因,它没有提交我的表单,或者它正在提交表单,即使在我更改代码时不应该提交表单

我使用的代码是:

$(document).ready(function () {
    $('#myForm').submit(function () {
        return false;
    });

    $('#myElement1, #myElement2').pStrength({
        'changeBackground': false,
        'onPasswordStrengthChanged': function (passwordStrength, strengthPercentage) {
            if ($(this).val()) {
                $.fn.pStrength('changeBackground', this, passwordStrength);
            } else {
                $.fn.pStrength('resetStyle', this);
            }
            $('#' + $(this).data('display')).html('Your password strength is ' + strengthPercentage + '%');
        },
        'onValidatePassword': function (strengthPercentage) {
            $('#' + $(this).data('display')).html(
                $('#' + $(this).data('display')).html() + ' Great, now you can continue to change your password!');

            $('#myForm').submit(function () {
                return true;
            });
        }
    });
});
有人告诉我,我应该使用布尔值,在验证检查中,将其设置为true或false

问题是我不知道怎么做

有没有人可以帮助我并向我展示执行此操作的代码

提前感谢

在onValidatePassword中,您将绑定到提交事件,而不是提交表单。替换此代码:

$('#myForm').submit(function () {
   return true;
});


它仍在提交的原因是onValidatePassword函数在每个字段上运行,而实际上您有两个字段要验证。如果一个字段验证而另一个字段未验证,则表单仍将提交,因为布尔值已设置为true,这是提交所需的唯一条件

下面更新的代码,您也可以参考

您的完整onValidatePassword回调现在应该如下所示:

'onValidatePassword': function (strengthPercentage) {
    $('#' + $(this).data('display')).html(
            $('#' + $(this).data('display')).html() + ' Great, now you can continue to change your password!');

    formValid = strengthPercentage >= 60;

    // set for each element
    if (strengthPercentage >= 60) {
        $(this).data('valid', 'yup');
    } else {
        $(this).data('valid', 'nope');
    }
}

您是否检查了控制台以检查阻止表单提交的任何错误?也许您应该询问“某人”他们的意思。对我来说似乎很模糊。如果你注释掉第一个$myForm.提交部分,表单是否按预期提交?$document.readyryryrycrossan之后的那一个我检查了控制台,没有错误不,Mike我试过了他不在任何地方,通常我的同事会处理javascript,但他今天生病了,所以我一直在用它@irot我已经尝试过了,它会提交,即使它不应该提交。根据文档中指定的默认值,它应该只在密码强度至少为60%时提交,但即使我的密码强度为10%,它也会提交,谢谢你的帮助。我使用的文档位于“感谢你的贡献”,但是如果我这样做,它根本不会提交,有什么想法吗?@NoclRecipients尝试删除第一个返回false的提交处理程序。如果我这样做,它即使在不应该的情况下也会提交,这似乎效果更好,唯一的问题是它现在一生效就提交,所以用户仍然忙于键入。有没有办法让表单只在单击提交输入后提交?谢谢你的帮助!更新了我的答案以删除提交触发器,看看这是否符合您的需要。即使Strength Percentage小于60,它现在也在提交,我不确定我是否在正确的位置声明了它,我已经将它放在了$'myForm'的正上方。submitfunction{return true;};真奇怪。为了清楚起见,我更新了我的答案,但是如果你想更安全,你可以尝试使用parseIntstrengthPercentage来计算strengthPercentage,以确保它也被作为一个整数进行比较。Hi@irot仍然是同一个问题,我已经检查过,strengthPercentage确实是一个int,你想让我创建一个页面并将链接发送给你,这样你就可以自己查看了吗?
$(document).ready(function () {
    $('#myForm').submit(function (event) {
        // TODO: check that the two field values match as well
        if ($('#myElement1').data('valid') === 'yup' &&
            $('#myElement2').data('valid') === 'yup') {
            // remove these three lines to make it submit
            alert('Submitting...');

            event.preventDefault();

            return false;

            // and uncomment this one line
            //return true;
        } else {
            event.preventDefault();
            return false;
        }
    });

    $('#myElement1, #myElement2').data('valid', 'nope');

...
'onValidatePassword': function (strengthPercentage) {
    $('#' + $(this).data('display')).html(
            $('#' + $(this).data('display')).html() + ' Great, now you can continue to change your password!');

    formValid = strengthPercentage >= 60;

    // set for each element
    if (strengthPercentage >= 60) {
        $(this).data('valid', 'yup');
    } else {
        $(this).data('valid', 'nope');
    }
}