基本(入力されたユーザー名、最小の長さのユーザー名など)を確認できるだけでなく、ユーザー名や電子メールなどがまだ確認されていないことを確認できるように(データベース検索が必要)、フォームを検証したい。
$.post
私はすべてのピースを持っています、そして遊んだ後、それが私の「失敗」カウンターに追加することを意図している間、ステートメントがそうしていないことを見つけるためにそれを絞り込みました。$.post
本当に検証できるように、行から何らかの形式の出力を取得するにはどうすればよいですか(現在、ユーザー名が使用できない場合でも、フォームが送信されるため)。
これが私の<script>
ものです(ただし、簡単にするために、ユーザー名の部分を表示するために短縮されています)。'usernameoff'が私のエラーブロックであることに注意してください。
function validateForm()
{
// set variables
var username=document.forms["registrationnew"]["username"].value;
var usernamespace=username.indexOf(" ");
// set fail counter variable to determine if any requirements failed
var counter=0;
// check that username isn't blank, containing spaces, too short, or taken
if (username==null || username=="")
{
counter++;
$('#usernameoff').html("Must enter a username");
}
else if (username.indexOf(" ") >= 0)
{
counter++;
$('#usernameoff').html("Cannot contain spaces");
}
else if (username.length < 3)
{
counter++;
$('#usernameoff').html("Must be at least three characters");
}
else
{
$.post("check_username.php", {username: username}, function(result)
{
if(result == 0)
{
$('#usernameoff').html("Available");
}
else
{
counter++;
$('#usernameoff').html("Not available");
}
});
}
// if any test failed, return false
if (counter > 0)
{
document.getElementById("errorflag").innerHTML=counter;
return false;
}
}
$.post
入力されたユーザー名がすでに使用されているかどうかを判断するためのクエリを実行します(0または1を返します)。私の問題は、どちらを返すかに関係なく、「counter」をインクリメントしないため、フォームが引き続き送信されることです。