我正在将登录/注册页面转换为使用 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 中。我指的是调用相同 JS 函数的不同页面上的两个单独的 HTML 表单,唯一的区别是错误消息输出中的文本。
编辑 2
JFiddle 示例:这里
文本框 onclear 不适用于小提琴,但我认为您可以了解我正在尝试做的事情的要点。