onSubmit上.ajaxForm()的setCustomValidity

时间:2016-06-26 10:23:10

标签: javascript jquery forms ajaxform

我在单击按钮时将表单加载到模式对话框中,并在加载时将.ajaxForm()附加到它。 ajaxForm()有一个beforeSubmit函数,我在其中调用两个函数来验证用户名和密码字段,并在它们上设置.setCustomValidity()。我想象它会像这样;单击提交验证在beforeSubmit中完成,并且setCustomValidity在无效字段上设置;然后,提交尝试时会显示一条消息。

但是,仅在我第二次单击“提交”后才会显示消息。它第一次什么也没做。

这是表格。

<form method="POST" action="/scripts/register.php" id="register-form">
  <input minlength="6" maxlength="15" type="text" id="user" name="user" oninput="setCustomValidity('')" placeholder="Username" required>
  <input minlength="6" maxlength="15" type="password" id="pass" name="pass" oninput="setCustomValidity('')" placeholder="Password" required>
  <input minlength="6" maxlength="15" type="password" id="confirm_pass" name="confirm_pass" oninput="setCustomValidity('')" placeholder="Confirm Password" required>
  <input type="email" id="email" name="email" placeholder="E-mail" required>
  <input type="submit" name="login" class="button" value="Login">
</form>

将表单加载到对话框中

$( "body" ).on("click","#register",function(){
    $(".modal-dialog").load("register-form.php", function(){
        $('#register-form').ajaxForm({ 
            beforeSubmit : function(){
                check_password_validity();
                check_username_validity();
            }
        });
    });
    $( ".dialog-overlay" ).addClass( 'dialog-overlay-open' );
});

这两个函数我在哪里setCustomValidity:

function check_password_validity(){
var pass = $("#pass").val();
var pass2 = $("#confirm_pass").val();
if(!is_alnum(pass)){
    $("#pass")[0].setCustomValidity("Samo alfanumerički znakovi, bez razmaka i posebnih znakova.");
    return;
}
if(pass!=pass2){
    $("#confirm_pass")[0].setCustomValidity("Lozinke se ne podudaraju!");
    return;
}
}
function check_username_validity(){
var user = $("#user").val();
if(!is_alnum(user)){
    $("#user")[0].setCustomValidity("Samo alfanumerički znakovi, bez razmaka i posebnih znakova.");
    return;
}
$.post( "/scripts/check_username_exists.php", {username: user}, function( data ) {
    if(data=="true"){
        $("#user")[0].setCustomValidity("Korisnik s tim imenom već postoji.");
        return;
    }
});
}

这适用于所有,但在第二次单击“提交”按钮后,第二次提交尝试时会显示消息。我似乎错过了一些简单但却无法弄清楚它是什么的东西。

0 个答案:

没有答案