0

登録フォームを作成しています。ユーザーがフォームを送信できるようになる前に、それを検証し、ユーザー名と電子メールの可用性を確認したいので、エラーを通知して最初からやり直すための別のページは必要ありません。

可用性を確認するためのコードは次のとおりです。

function checkUsername() {
$.post('php/availability.php',{username: $('#username').val()}, function(usernamedata){
if(usernamedata.exists){
    $("#username").css('background-image','url(images/in-use.png)');
    $("#username-use").val("inuse");
}else{
    $("#username").css('background-image','none');
    $("#username-use").val("free");
} }, 'JSON'); }

電子メールをチェックするためのコードは、明らかな違いを除けばまったく同じです。データベースで一致するユーザー名/電子メールをチェックし、結果に応じて非表示フィールドの値を設定します。非表示のフィールドは両方ともデフォルトで「無料」に設定されています。

これは、ユーザー名または電子メールのいずれかが「inuse」に設定されている場合に登録ボタンを無効にすることになっているコードです。しかし、それはそれ自身の心を持っているようで、私はそれがどのように最終結果に到達しているのか理解できません。

function buttonCheck() {
var username = $("#username-use").val();
var email = $("#email-use").val();
if(username == "free" && email == "free") {
    $("#registration-send").attr('disabled','disabled');
} 
else {
    $("#registration-send").removeAttr('disabled');
} }

作業が逆になっているようで、何かが「使用中」のときにボタンを有効にします。私は物事を交換しようとしましたが、それは何も変わりません。

checkUsername()/ checkEmail()とbuttonCheck()は両方とも、関連する入力の変更時に一緒に呼び出されます。

<input id="username" name="username" type="text" autocomplete="off" maxlength="100" class="req-string" onChange="checkUsername(); buttonCheck()">
4

1 に答える 1

0

無料のヒント : コールバック関数を利用する

function checkUsername() {
$.post('php/availability.php',{username: $('#username').val()}, function(usernamedata){
if(usernamedata.exists){
    $("#username").css('background-image','url(images/in-use.png)');
    $("#registration-send").attr('disabled','disabled');
}else{
    $("#username").css('background-image','none');
    $("#registration-send").removeAttr('disabled');
} }, 'JSON'); }

隠しフィールドを設定する必要はありません。最善の方法は、成功のコールバック自体でそれを処理することです。

メールアドレスの原子性をチェックするための同様のコードを書くこともできます。

アップデート::

var correctUsername=0,correctEmail=0;

function checkUsername() {
$.post('php/availability.php',{username: $('#username').val()}, function(usernamedata){
if(usernamedata.exists){
    $("#username").css('background-image','url(images/in-use.png)');
    $("#registration-send").attr('disabled','disabled');
    correctUsername=0;
}else{
    $("#username").css('background-image','none');
    correctUsername=1;
    if(correctEmail==1){
        $("#registration-send").removeAttr('disabled');
    }
} }, 'JSON'); }

設定する電子メールについても同様のコードcorrectEmail=1を繰り返します。removeAttrcorrectUsername==1

于 2013-01-21T17:12:18.643 に答える