我有一个包含超过80个js文件的大型Rails项目,并且我一直在Chrome控制台中收到此消息:
Nothing selected, can't validate, returning nothing.
但是,我无法弄清楚该消息是什么。我使用验证插件的所有表单似乎都正确地验证了它们应该如何。
如何追溯以查看实际导致此消息出现的文件或函数?
以下是验证插件的相关部分:
// if nothing is selected, return nothing; can't chain anyway
if ( !this.length ) {
if ( options && options.debug && window.console ) {
console.warn( "Nothing selected, can't validate, returning nothing." );
}
return;
}
似乎在不存在的选择器上调用了validate(),但是我在整个项目的数百个地方调用了validate(),这就是为什么我正在寻找一种方法来跟踪确切的调用到validate()方法。
答案 0 :(得分:9)
来自jQuery Validate插件本身......
(function($) {
$.extend($.fn, {
// http://docs.jquery.com/Plugins/Validation/validate
validate: function( options ) {
// if nothing is selected, return nothing; can't chain anyway
if ( !this.length ) {
if ( options && options.debug && window.console ) {
console.warn( "Nothing selected, can't validate, returning nothing." );
}
return;
}
....
因此,您使用插件的方式似乎非常错误。该代码似乎表明您未将.validate()
正确附加到form
元素。
引用OP:
“但是我在整个项目的数百个地方调用
validate()
,这就是为什么我正在寻找一种方法来跟踪对validate()
方法的确切调用。”
您的控制台错误仅与浏览器中加载的页面相关。当然,您没有在单个页面上加载数百个<form>...</form>
个对象。
仅当debug:
选项设置为true
时才会显示控制台“警告”,这仅表示在表单中不存在.validate()
的情况下调用debug:
DOM。这只是一个警告,而不是错误。此外,您无法真正使用true
设置为{{1}}的插件,因为该表单永远不会提交。
“启用调试模式。如果为true,表单未提交且确定 错误显示在控制台上(将检查window.console 财产存在)。尝试在刚刚提交表单时启用 验证停止提交。示例:阻止表单 提交并尝试使用警告帮助设置验证 关于缺少方法和其他调试消息。“
答案 1 :(得分:1)
如果您单击控制台并查看错误出现的位置,请单击发生错误的文件。
将breakpoint
设置为此行并刷新页面。在再次出现错误之前,请查看右侧的 stacktrace 选项,并注意到它是如何达到这一点的,这可以帮助您在确定基础问题的位置时向后退。
它将向您显示引导它到达目的地的功能。您还可以看到“范围变量”,以查看某些内容是否未定义/ null这里它不应该是。
答案 2 :(得分:0)
以下是我最终追踪导致问题的代码所做的工作。
我编辑了jquery.validate.min.js文件,看起来像这样:
if ( !this.length ) {
if ( options && options.debug && window.console ) {
console.warn(this.selector); //this showed the call to validate() that was the problem
console.warn( "Nothing selected, can't validate, returning nothing." );
}
return;
}
查看控制台,然后我找到了相应的文件,它具有此功能(在CoffeeScript中):
$('body.drawing_categories #yield form').validate
debug: true,
submitHandler: (form) ->
add_addl_drawings = $('<input/>').attr(
type: 'hidden',
id: 'add_addl_drawings'
name: 'add_addl_drawings'
).appendTo(form)
debug: true
部分是问题所在。一旦我拿出它,控制台中的警告消失了。
非常感谢并且感谢Sparky,他带领我找到了这个解决方案。