ログイン/登録ページを Ajax/jQuery を使用するように変換しています。そのため、2 つのフォーム間には多くの共通の検証機能があります。私が jQuery を使用している領域の 1 つは、入力に基づいてエラー メッセージをユーザーに出力することです。フォームは同様の要素 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
}
私はいくつかの奇妙な出来事を経験しました。
まず、上記のコードは a を返しますg.nodeName is undefined error
。初期条件を次のように変更すると
if ($("input#username").is('.registerName'))
同じエラーが Firebug に表示されます。
でも、
if ($("#username").is('.registerName'))
と
if ($("#username").hasClass('registerName))
どちらも失敗し、ログイン検証セクションが実行されます。
では、g.nodeName 未定義エラーなしで、クラス名に基づいて実行する正しいコード ブロックを取得するにはどうすればよいでしょうか?
編集
明確にするために、同じページに 2 つのフォームはありません。コード機能は JavaScript にあります。同じ JS 関数を呼び出す異なるページ上の 2 つの別個の HTML フォームについて言及していますが、唯一の違いはエラー メッセージ出力のテキストです。
編集2
JFiddle の例:ここ
テキスト ボックス onclear はフィドルでは機能しませんが、私がやろうとしていることの要点を理解できると思います。