我正在将登录/注册页面转换为使用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示例:这里
“清除”文本框不适用于小提琴,但我认为您可以了解我所要做的事情的要点。
发布于 2012-06-13 21:57:58
我不能复制你所得到的确切问题,但是试一试
if ($(this).is('.registerName'))而不是。这样,您就会知道它只查看发生keyup事件的特定元素。$(':input')将查找页面上的所有输入。
https://stackoverflow.com/questions/11023325
复制相似问题