jQuery回调无法正常工作

时间:2016-03-16 23:43:38

标签: javascript jquery callback jquery-callback

我有以下代码,回调似乎无法正常工作。我的理解是,如果用户名未定义或空白,则应显示#username-error div,并将错误类添加到添加到用户名输入的get中。只有在完成所有操作后才能触发警报。但是,当我查看浏览器时,错误div不会显示,并且会触发警报。很明显,班级错误'正在添加,因此建议#username-error div具有调用它的.show()函数是合理的,但它确实看起来不像。只有在出现#username-error div后,您才能获得警报才能获得帮助。非常感谢。



<script type="text/javascript">
$(document).ready(function() {
    $("input[name='username']").bind("blur", function() {
        validateUsername(myFunction);
    });

    $("input[type='submit']").bind("click", function() {
        validateUsername(myFunction);
    });

    $("#username-error").hide();
    $("#username-success").hide();
});

function myFunction() {
    if ($(".error").length > 0) {
        alert("errors on page");
        return false;
    }
}

function validateUsername(callback) {
    var $username = $("input[name='username']");
    if (typeof $username.val() === "undefined" || $username.val() === "") {
        $("#username-error").show();
        $("#username-success").hide();
        $username.addClass("error");
    } else {
        $("#username-error").hide();
        $("#username-success").show();
        $username.removeClass("error");
    }
    if (callback) {
        callback();
    }
}
</script>
&#13;
&#13;
&#13;

1 个答案:

答案 0 :(得分:0)

您需要添加一个返回按钮单击

$("input[type='submit']").bind("click", function() {
    return validateUsername(myFunction);
});

你应该返回true

function myFunction() {
    if ($(".error").length > 0) {
        alert("errors on page");
        return false;
    } 
    return true;
}

并在validate方法中添加return

function validateUsername(callback) {
    var $username = $("input[name='username']");
    if (typeof $username.val() === "undefined" || $username.val() === "") {
        $("#username-error").show();
        $("#username-success").hide();
        $username.addClass("error");
    } else {
        $("#username-error").hide();
        $("#username-success").show();
        $username.removeClass("error");
    }
    if (callback) {
        return callback();
    }

}

但是在这里使用回调真的没有多大意义。