变量中的Javascript函数

时间:2016-02-28 12:39:03

标签: javascript jquery

我需要知道为什么这个函数在引用变量时没有附加我的错误消息。我尝试返回一些像“false”这样的值,但仍然没有工作。请帮我在这里学到一些东西。

    function checkName(el)
  {
    if (/^[a-zA-Z ]+$/.test(el.val()))
    {
      return null
    }
    return el
  }

  $(document).ready(function()
  {
      $('button[name=btn-submit]').on('click', function(e)
        {
          e.preventDefault();
          var err = {
            fn: checkName($('input[name=fn]')),
            mn: checkName($('input[name=mn]')),
            ln: checkName($('input[name=ln]'))
          }

          var isSubmit = function(){
              for (var key in err) {
                if (err.hasOwnProperty(key)) {
                  if(err[key] !== null)
                  {
                    var parent_div = err[key].parent().closest('div');
                    parent_div.append('<p id="p-error" class="error-msg">test</p>');
                  }
                }                
              }              
          }
          console.log(isSubmit);
          //

1 个答案:

答案 0 :(得分:1)

你永远不会调用处理err对象的函数。您只是创建并将该功能分配给isSubmit变量。

要调用它,您需要将()添加到结尾,或者添加到函数表达式的末尾(如果您的目标是分配调用它的结果isSubmit),或isSubmit中的console.log之后(如果您的目标是在那里调用它)。

,例如

var isSubmit = function(){
    for (var key in err) {
      if (err.hasOwnProperty(key)) {
        if(err[key] !== null)
        {
          var parent_div = err[key].parent().closest('div');
          parent_div.append('<p id="p-error" class="error-msg">test</p>');
        }
      }                
    }              
}(); // <== Here (could be pretty easy to miss seeing this, though)

console.log(isSubmit());
// Here ------------^^