2

これは私のコードです。

.js

$(document).ready(function() {

    $("#username").focusout(function() {

        $.ajax({
            type:'post',
            url:site_url()+'/client/checkUserName',
            data:{'username':$("#username").val()},
            dataType:'json',
            success:function(result){
                if(result != 'false'){
                  $('#message').text('Username exists');  
                }

            }
        });  
    });

.html

<form id='form1'  method="post">
        <input type="text" name="username" id="username"/>
        <span id="message" style="color:red"></span>
        <input type="submit" value="submit" id="regis" class="btn"/>
</form>

フォーカスアウトで正常に動作します。ユーザー名が存在する場合にフォームを送信しないようにする方法は?

フォームに隠しフィールドがあるとします

   <input type="text" hidden id="type" value="<?php echo $type;?>">

次に、非表示フィールドに値が存在する場合、ユーザー名が既に存在するかどうかを確認する必要はありません。

4

4 に答える 4

0

関数を呼び出す場所と同様にreturnfalseを追加する必要があります

 if(result != 'false'){
                  $('#message').text('Username exists'); 
                   return true; 
                    }
                    else
                    {
                      return false;
                    }
于 2012-12-12T16:49:51.100 に答える
0

送信ボタンを無効にするだけです

$(document).ready(function() {

$("#username").focusout(function() {

    $.ajax({
        type:'post',
        url:site_url()+'/client/checkUserName',
        data:{'username':$("#username").val()},
        dataType:'json',
        success:function(result){
            if(result != 'false'){
              $('#message').text('Username exists');
              $('#regis').attr('disabled','disabled');
            } else {
              $('#regis').removeAttr('disabled');
            }
        }
    });  
});
于 2012-12-12T16:43:39.957 に答える
0

あなたのjsコードを関数に入れて追加する必要があるかもしれません:return false;チェックが失敗した場合に追加しonsubmit = "[functionName]";ます.

于 2012-12-12T16:44:38.503 に答える
0

ユーザー名が JavaScript に存在することだけを確認した場合、サイトは安全ではありません。ハッカーが実際にボタンをクリックしたり、クライアント側のコードを実行したりする必要はありません。

したがって、送信がすでに行われている場合は、サーバー側でユーザー名の存在を確認する必要があります。その場合、javascript チェックから得られるものはあまりありません。

また、存在するユーザー名と存在しないユーザー名を確認する方法をハッカーに提供したくありません。送信後に確認すると、ハッカーはユーザー名が無効だったのか、パスワードが間違っていたのかわかりません。

編集: これまでのところ、@КонстантинРекунов は動作する可能性のある唯一の JavaScript を提供しています。ただし、ソリューションの壊れやすい性質に関する彼の回答の下にある私のコメントを参照してください。このようなソリューションは本質的に脆弱です。

このようなことを行う唯一の合理的な理由は、サインアップ プロセス中に代替案を提案することです。それでも悪い習慣です。意図したデザインを変更することをお勧めします。

于 2012-12-12T16:42:34.183 に答える