g.nodeName未定义

时间:2012-06-13 21:08:14

标签: javascript jquery firebug

我正在将登录/注册页面转换为使用Ajax / jQuery。因此,两种形式之间存在许多共同的验证功能。我正在使用jQuery的一个方面是根据输入向用户输出错误消息。虽然表单共享相似的元素ID,但类名不同。

因此,为了检查用户名,我有

if ($(":input").is('.registerName')){
   //Username belongs to the registration form, so check if current entry is 
   //valid and not taken.  Output error message otherwise

}  else {
   //username belongs to the login form, so check if current entry exists in database
   //output username/password error depending on catch
}

我经历过一些奇怪的事情。

首先,上面的代码返回g.nodeName is undefined error。如果我将初始条件更改为

if ($("input#username").is('.registerName'))

同样的错误出现在Firebug中。

然而,

if ($("#username").is('.registerName'))

if ($("#username").hasClass('registerName))

都失败并且登录验证部分执行。

那么如何在没有g.nodeName未定义错误的情况下根据类名获取正确的代码块呢?

修改

澄清 - 同一页面上没有两个表格。代码功能在javascript中。我指的是不同页面上的两个单独的HTML表单,它们调用相同的JS函数,唯一的区别是错误消息输出中的文本。

编辑2

JFiddle示例:Here

onclear上的文本框对小提琴不起作用,但我认为你可以得到我想要做的事情的要点。

1 个答案:

答案 0 :(得分:1)

我无法重现您遇到的确切问题,但请尝试

if ($(this).is('.registerName'))

代替。这样你就会知道它只是查看keyup事件发生的特定元素。 $(':input')将在页面上查找所有输入。