現在、Ajax/jQuery を使用するように登録ページを調整しています。単純な段階で、ユーザー名とパスワードを要求するだけです。
jQuery を使用して、ユーザー名テキスト ボックスの現在のエントリが無効であるか、既に使用されているかをユーザーに伝えたいと考えています。いずれかの条件が満たされた場合、div namemsg にテキストが追加され、fadeIn イベントが実行されます。
送信ボタンが無効な状態でページが読み込まれ、検証に合格するとボタンが有効になります。これを行うには、ユーザー名の検証を処理する次の ajax リクエストがあります。
$("#username").keyup(function(){
//get current value
thisVal = $(this).val();
//execute request to see if current val exists in database
$.ajax({
type: "GET",
url: "includes/phpscripts.php?action=checkUser",
data: {username:thisVal},
success: function(data){
//if username is already taken, show warning and disable submit button
if (data == 'true'){
$("#namemsg").text("Username is already taken");
$("#namemsg").fadeIn(100);
$("#submit").attr('disabled', 'disabled');
}
//otherwise, possible valid username
else if (data == 'false'){
//check if username is of the proper length. If not, display
//error and disable submit button
if ($(this).val().length < 5){
$("#namemsg").text("Invalid Username");
$("#namemsg").fadeIn(100);
$("#submit").attr('disabled', 'disabled');
}
//valid username, enable submit button and hide any error messages
else {
$("#namemsg").hide();
$("#submit").removeAttr("disabled");
}
}
}
});
return false;
});
私の問題は、リクエストがサーバーから適切な値を取得することですが、firebug はelem.nodeName
、jquery 1.7.2 の 2368 行で未定義であると不平を言います。その行は
if ( elem ) {
hooks = jQuery.valHooks[ elem.nodeName.toLowerCase() ] || jQuery.valHooks[ elem.type ];
にブレークポイントを設定するとif (elem)
、elem
値がありました
nodeName : INPUT
type : text
hooks
未定義を返しました。これは Firefox 固有の問題ですか、私のコードまたは jQuery の問題ですか? また、これに対する回避策はありますか?