在同一表单上使用Blur和Submit事件

时间:2013-06-23 04:53:31

标签: javascript jquery

我仍然对此感到困惑。现在开始学习JQuery大约一周,这就是我所拥有的:

var IsValidUserName = false;

$(document).ready(function () {
    $('#txtUserName').blur(function () {

  if ($('#txtUserName').val().match(isNumberLetter) && 
($('#txtUserName').val().length >= 8)) {

            $('#userNameError').removeClass("error").addClass("default");
            $('#txtUserName').removeClass("alert");
            $('#txtUserName + label').removeAttr("id", "lblUserName");
            IsValidUserName = true;
        }
        else {
            $('#userNameError').removeClass("default").addClass("error");
            $('#txtUserName').addClass("alert");
            $('#txtUserName + label').attr("id", "lblUserName");
        }
    });
});

假设我有其他功能,请说 FirstName

如何在提交活动中调用此内容?当用户离开字段时,代码可以正常工作。我不确定如何调用此代码,并且如果输入的数据无效,也可以使用上面的变量来阻止提交。

如果用户点击提交按钮,我需要调用上面的验证,如果IsValidUserName变量为false,则需要停止提交。

有些事情需要一点推动。

感谢我的朋友们。

1 个答案:

答案 0 :(得分:2)

您始终可以将其提取到函数中而不是匿名函数中,并将引用传递给要检查的对象。这将为您提供将其重用于其他元素的额外好处。

function validate(ele) {
    var valid;

    if (ele.val().match(isNumberLetter)) && (ele.val().length >= 8)) {
        valid = true;

        // update user here.
    } else {
        valid = false;

        // update user here.
    }

    return valid;
}

$(function(){
    $('#firstName').blur(function(){ validate($(this)); });
    $('#lastName').blur(function(){ validate($(this)); });

    $("yourFrom").submit(function(){
        var firstNameIsValid = validate($('#firstName'));
        var lastNameIsValid = validate($('#lastName'));

        if (!nameIsValid) && (!lastNameIsValid) {
            return false;
            // User has already been updated
        }
    });
});

此外,由于您已经大量使用javascript进行验证(希望这是方便而不是唯一的安全性),您还可以完全禁用提交按钮,直到表单符合正确的要求。