当关注输入时,得到错误:jQuery中未捕获的TypeError

时间:2017-06-14 08:26:42

标签: javascript jquery

我有一个输入,每次我专注于它或键入的东西我得到以下错误:

Uncaught TypeError: a.nodeName.toLowerCase is not a function
    at Array.<anonymous> (jQuery-2.1.4.min.js:2)
    at jQuery-2.1.4.min.js:2
    at f (jQuery-2.1.4.min.js:2)
    at ga.select (jQuery-2.1.4.min.js:2)
    at Function.ga [as find] (jQuery-2.1.4.min.js:2)
    at HTMLDocument.handlers (jQuery-2.1.4.min.js:3)
    at HTMLDocument.dispatch (jQuery-2.1.4.min.js:3)
    at HTMLDocument.r.handle (jQuery-2.1.4.min.js:3)

任何人都知道这可能意味着什么?

这似乎是jquery文件中的错误所在:

   filter: {
        TAG: function(a) {
            var b = a.replace(ca, da).toLowerCase();
            return "*" === a ? function() {
                return !0
            }
            : function(a) {
             // HERE
                return a.nodeName && a.nodeName.toLowerCase() === b
            }
        },

HTML

<div class="form-group">
  <label class="col-sm-3 control-label" for="kw1">Keyword 1</label>
  <div class="col-sm-9">
    <input class="form-control" type="text" value="" id="kw1" />
  </div>
</div>

4 个答案:

答案 0 :(得分:0)

  

toLowerCase()方法将字符串转换为小写字母。

因此,您是否尝试过将a.nodeName转换为字符串?

a.nodeName.toString().toLowerCase();

答案 1 :(得分:0)

首先将nodeName解析为String:

a.nodeName.toString().toLowerCase();

答案 2 :(得分:0)

重要的错误部分

Array.<anonymous>

jQuery返回一个集合/数组

因此,您必须指定索引

a[index].nodeName.toLowerCase()

a[0].nodeName.toLowerCase()

检查以下

console.log($('div')[0].nodeName.toLowerCase()); //=>work 

console.log($('div').nodeName.toLowerCase()); // => error
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script>
<div>
  <div>
    Hello world
  </div>
</div>

答案 3 :(得分:0)

这解决了问题:https://stackoverflow.com/a/35579223/4031815

在我们的表单中有另一个名为nodeName的输入,它导致与名为nodeName的jQuery var冲突,所以我将名称更改为另一个东西,这解决了问题