函数没有在jQuery中调用

时间:2016-03-28 17:29:44

标签: javascript jquery

我正在使用此功能

$(function () {
    validateSignUp = function () {
        console.log("Validation running");
        em = $('#s_email').val();
        a = validateEmail(em);
        if (!a) {
            $('#s_email').css({ "border": "3px solid red" });
            $("#signup_comments").html("Please Enter a valid Email Address");
            return false;
        }
        else
            return true;
    };
    $("#mybutton").click(function () { console.log(validateSignUp) });
});

当我运行上面的函数时,控制台会打印完整的函数,因为它不是函数和变量。

为什么它不作为函数返回true或false? 为什么它表现得像变量?

2 个答案:

答案 0 :(得分:1)

您必须call function

 console.log(validateSignUp());

在您的代码中,您只是将function reference作为参数传递给console.log(),因此它正在打印该函数引用的原始值(字符串),即object

答案 1 :(得分:0)

validateSignUp是对函数的引用,因此,您需要调用此函数,然后记录结果,如下所示:

 $("#mybutton").click(function () { 
      var fnResult = validateSignUp() ;
      console.log(fnResult) 
 });

其次,当mybutton按钮已添加到DOM时,您需要执行此代码,否则jQuery不会向其添加onClick事件,因为此时将使用此ID存在零元素。 你可以用两种方式做到这一点:

  1. 将此功能包装在onLoad事件
  2. 将defer属性添加到它(它将执行脚本,当解析整个dom时)。