我有一个输入,每次我专注于它或键入的东西我得到以下错误:
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
}
},
<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>
答案 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冲突,所以我将名称更改为另一个东西,这解决了问题