【问题标题】:With multiple 'if else' statements, how do you submit a form only if they all return true?使用多个“if else”语句,只有当它们都返回 true 时,您如何提交表单?
【发布时间】:2013-05-17 06:03:07
【问题描述】:

我有一个密码强度验证要求列表,以帮助用户设置密码,它被分成几部分,这样一旦用户在密码输入框中输入了有效值,我就可以将每个要求标记为“有效”。 (因此,如果他们输入的密码长度超过 7 个字符,密码长度要求通知会变为绿色等)。这很好用。

现在,我想说,如果所有 'if' 语句都有效,则允许提交表单,否则,不要提交。阅读后,我通过设置变量 retVal = true 进行了一些尝试来实现这一点,但我不太确定如何使用它,所以到目前为止我的尝试都失败了。我还考虑过这样做,如果所有要求的类都有效,那么允许表单提交,但这似乎不是正确的方式?

$('#form-password-change #input-password').keyup(function() {

    // set password variable

    var pwd = $(this).val();

    // validate the length

    if (pwd.length > 7) {
        $('#length').removeClass('invalid').addClass('valid');
    } else {
        $('#length').removeClass('valid').addClass('invalid');
    }

    // RegExp
    // validate letter

    if ( /([^a-z]*[a-z]){3,}/i.test(pwd) ) {
        $('#letter').removeClass('invalid').addClass('valid');
    } else {
        $('#letter').removeClass('valid').addClass('invalid');
    }
});

【问题讨论】:

    标签: jquery forms if-statement submit


    【解决方案1】:

    试试这个:

    $('#form-password-change #input-password').keyup(function() {
    
        // set password variable
    
        var pwd = $(this).val();
    
        var truetest = 1;
        // validate the length
    
        if (pwd.length > 7) {
            $('#length').removeClass('invalid').addClass('valid');    
        } else {
           $('#length').removeClass('valid').addClass('invalid');
            truetest = 0;
        }
    
        // RegExp
        // validate letter
    
        if ( /([^a-z]*[a-z]){3,}/i.test(pwd) ) {
             $('#letter').removeClass('invalid').addClass('valid');
        } else {
            $('#letter').removeClass('valid').addClass('invalid');
            truetest = 0;
        }
    
        if(truetest)
        {
            //Do your stuff here
        }
    });
    

    【讨论】:

    • 只要至少有一个if 语句为真,就会返回真。 OP 希望只有在它们都是真实的情况下才会发生。
    • 谢谢@Borniet。不确定是否是其他问题导致了此问题,或者我是否写错了,但我尝试填写 if(truetest) 部分,但它对我来说不太有效。 if (truetest) { $('#form-password-change').submit(function(){ return true; }); }else { $('#form-password-change').submit(function(){ return false; }); } 但它只是提交无关紧要。与它在 keyup 函数中有关吗?
    • 也许可以尝试 if(truetest == 1) 以确保清晰和确定,并添加一些 alert(truetest);在代码之间查看它是否实际发生了变化,以及您在脚本中的位置(例如,如果您或多或少确定前面的 if 语句应该放在此处或此处,请为两者添加不同的警报,并且你可以看到它的作用。
    • 好吧,这让我更接近了,如果我使用 if(truetest == 1),我可以获得警报并返回 false。我现在意识到这个表单提交只会在你输入密码框时起作用,因为它在 keyup 函数中。如果我难以让它发挥作用,我可能不得不发布另一个问题。
    【解决方案2】:

    试试这个:-

    $('#form-password-change #input-password').keyup(function() {
    
    var IsTrue=true;
    
    // set password variable
    
    var pwd = $(this).val();
    
    // validate the length
    
    if (pwd.length > 7) {
        $('#length').removeClass('invalid').addClass('valid');
    } else {
        $('#length').removeClass('valid').addClass('invalid');
       IsTrue=false;
    }
    
    // RegExp
    // validate letter
    
    if ( /([^a-z]*[a-z]){3,}/i.test(pwd) ) {
        $('#letter').removeClass('invalid').addClass('valid');
    } else {
        $('#letter').removeClass('valid').addClass('invalid');
       IsTrue=false
    }
    return IsTrue;
    });
    

    【讨论】:

      猜你喜欢
      • 2020-07-30
      • 2016-05-10
      • 2021-01-15
      • 1970-01-01
      • 2021-06-20
      • 2016-09-03
      • 2020-08-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多